我要求从一个活动(例如Apple)开始计时器自动开始运行20秒,一旦计时器结束,它就会结束另一个活动(例如橙色)。
但Apple中有一个按钮允许我点击另一个Apple活动(基本上是重复),并且计时器会在新的Apple中再次重置。
计时器的代码如下
new CountDownTimer(20000, 1000) {
public void onTick(long millisUntilFinished) {
public void onFinish() {
Intent i = new Intent(Apple.this, Orange.class);
Log.i(LG, "From Apple to Orange");
startActivity(i);
}
}.start();
如果Apple被激活一次并退出橙色,则没有问题。
但如果一个Apple(1)活动被激活,然后是另一个Apple(2)活动,那么Apple(1)的计时器似乎不会停止。例如,如果Apple(1)退出Apple(1),Apple(1)在10秒时退出Apple(2),则在退出Orange之前,它仅计为10秒(不是完整的20秒)。 / p>
我哪里出错了?
答案 0 :(得分:1)
这种情况正在发生,因为您没有保存Apple的实例状态。你有一些选择:
1)您可以将计时器从UI线程移开:
Resuming CountdownTimer after rotation
2)当Apple调用Apple然后在第二个实例中从该值恢复计时器时,只保存millisUntilFinished的实例可能更简单。这应该有帮助(你使用你的活动的onPause和onResume方法):