当我在 Activity 之间切换时,我需要一个 countDownTimer 保持运行。我有多个 Activity ,我将 countDownTimer 放在主要 Activity 中,但是当我切换到另一个 Activity 并返回到主要 Activity 时,它会转回再次计数从一开始,我就相信是因为 countDownTimer 方法是 onCreate 方法。
那么,我应该怎么做呢?
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
questionTime();
}
public void updateTimer(int secondsLeft){
int minutes = (int) secondsLeft / 60;
int seconds = secondsLeft - minutes * 60;
String secondString = Integer.toString(seconds);
timerTextView.setText(Integer.toString(minutes) + ":" + secondString);
}
private void questionTime(){
new CountDownTimer(10000, 1000){
@Override
public void onTick(long millisUntilFinished) {
updateTimer((int) millisUntilFinished / 1000);
}
@Override
public void onFinish() {
timerTextView.setText("0:00");
Log.i("finished", "timer Done");
}
}.start();
}
更新:这帮助我实现了目标 How to run CountDownTimer in a Service in Android?
最佳答案
也许这有点牵强,但我认为解决这个问题而不用担心 Activity 的方法是使用 IntentService。
即使您在 onSaveInstance() Hook 方法的 Bundle 中存储某种值,如果您在设备设置中启用“不保留 Activity ”标志,这也可能导致一些相当困惑的结果。
我要做的是创建一个 IntentService,当它被触发时开始倒计时,然后它通过 EventBus/Otto/BroadcastReceiver 将倒计时的变化广播回 UI。
另一种方法是在您的 Application 类中设置倒计时实例,并从那里检查它。
我会选择 IntentService 解决方案,因为在 Application 类中运行倒计时实例听起来有点不对劲。
如果您需要有关如何实现 IntentService 的任何细节,请告诉我,但一点谷歌搜索应该会告诉您如何去做。
关于java - 交换 Activity 后如何保持 countDownTimer 计数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51272549/