交换活动后如何保持倒计时计时器计数?

2024-01-08

当我在活动之间交换时,我需要一个 countDownTimer 继续运行。我有多个活动,我将 countDownTimer 放在主活动中,但是当我交换到另一个活动并返回到主活动时,它又会从头开始重新计数,我相信是因为 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();
}

Update:这帮助我实现了我的目标如何在 Android 的服务中运行 CountDownTimer? https://stackoverflow.com/questions/22496863/how-to-run-countdowntimer-in-a-service-in-android


也许这有点牵强,但我认为解决这个问题而不用担心活动的方法是使用 IntentService。

即使您在 onSaveInstance() 挂钩方法的 Bundle 中存储某种值,如果您在设备设置中启用“不保留活动”标志,也可能会导致一些非常混乱的结果。

我要做的是创建一个 IntentService,当它被触发时开始倒计时,然后它通过 EventBus/Otto/BroadcastReceiver 将倒计时的变化广播回 UI。

另一种方法是在您的应用程序类中拥有倒计时实例,并从那里检查它。

我会选择 IntentService 解决方案,因为在 Application 类中运行倒计时实例听起来有点不对劲。

如果您需要有关如何实现 IntentService 的任何具体信息,请告诉我,但稍微谷歌一下就可以告诉您如何做到这一点。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

交换活动后如何保持倒计时计时器计数? 的相关文章

随机推荐