当我在活动之间交换时,我需要一个 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(使用前将#替换为@)