Java 当Android中的应用程序配置更改时,计时器将重置为开启状态

Java 当Android中的应用程序配置更改时,计时器将重置为开启状态,java,android,android-viewmodel,chronometer,Java,Android,Android Viewmodel,Chronometer,我创建了一个秒表应用程序,使用计时器和ViewModel。在配置更改之前,该应用程序运行良好。当屏幕旋转时,秒表重置为00:00 这是StopwatchTabFrag.java的一部分 StopWatch选项卡ViewModel.buttonIcon.observe(getViewLifecycleOwner(),new Observer()){ @凌驾 更改后的公共void(整数imgId){ 开关(imgId){ //当用户单击播放图标时,图标更改为暂停(或),则秒表启动。 案例R.draw

我创建了一个秒表应用程序,使用
计时器
和ViewModel。在配置更改之前,该应用程序运行良好。当屏幕旋转时,秒表重置为
00:00

这是
StopwatchTabFrag.java
的一部分

StopWatch选项卡ViewModel.buttonIcon.observe(getViewLifecycleOwner(),new Observer()){
@凌驾
更改后的公共void(整数imgId){
开关(imgId){
//当用户单击播放图标时,图标更改为暂停(或),则秒表启动。
案例R.drawable.ic\u round\u pause\u circle\u filled\u 24:
binding.stop.setVisibility(View.VISIBLE);
binding.startPause.setImageResource(imgId);
秒表表表视图模型。startStopwatch(秒表计时器);
打破
//当图标更改为开始(或)时,当用户单击暂停图标时,秒表将暂停。
案例R.drawable.ic_round_play_arrow_24:
binding.startPause.setImageResource(imgId);
秒表TabViewModel.pauseStopwatch(秒表计时器);
打破
外壳R.drawable.ic\u round\u stop\u 24:
binding.stop.setVisibility(View.GONE);
秒表表表视图模型。秒表(秒表计时器);
}
}
});
我正在使用Observer,每当更改特定按钮图标时,它都会执行此特定任务

这是StopwatchTabViewModel.java的一部分

public void startStopwatch(天文钟){
如果(!isRunning.getValue()){
计时器.setBase(SystemClock.elapsedRealtime()-pauseOfset.getValue());
计时表。开始();
_isRunning.setValue(真);
}
}
公共空间暂停(天文钟){
if(isRunning.getValue()){
计时器。停止();
_pauseOfset.setValue(SystemClock.elapsedRealtime()-chronometer.getBase());
_isRunning.setValue(假);
}
}
公共空白秒表(计时表){
天文钟.setBase(SystemClock.elapsedRealtime());
_pauseOfset.设定值(0L);
计时器。停止();
//将图标重置为开始
_按钮图标设置值(R.可绘制。ic\u圆形\u播放\u箭头\u 24);
}
我在
ViewModel
类中实现了秒表任务方法。我不知道这是对还是错


我正在等待您的回答。

将这一行添加到您的
活动中
在清单中的声明:

android:configChanges="orientation|screenSize|screenLayout|keyboardHidden"
它将防止
活动
在旋转时销毁(因此也是您的计时),您必须自己在
onConfigurationChanged
方法调用中处理旋转(您可能不需要在这种情况下执行任何操作)

您有一些关于配置更改的信息