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

标签 java android

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

相关文章:

java - 在 Android 中获取当前星期几的最简单方法是什么?

java - 如何在锁定屏幕上添加 MediaPlayer 控件?

java - 如何更改添加到 View AndEngine 的 Sprite 的方向?

android - 在 android 和 iphone 上使用 salt 进行哈希处理

java - 使用 Google Api 获取文档列表并下载它们?

java - 显示 Java 文件而不是 XML 文件中的文本 (Android Studio)

Java 反射 : get class of field

java - 使用 SimpleDateFormat 返回日历

当应用程序缩小时,Android PDF 查看器崩溃

java - Jackson , java.time , ISO 8601 , 无毫秒序列化