gpt4 book ai didi

java - 交换 Activity 后如何保持 countDownTimer 计数?

转载 作者:行者123 更新时间:2023-11-29 02:27:45 25 4
gpt4 key购买 nike

当我在 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com