我有一个计时器,它运行在活动的OnCreate方法上,如下所示。运行时,计时器会按预期递增。显示:
0时, 00:01, 00:02, 等
final Timer timer = new Timer();
final TimerTask timerTask = new TimerTask(){
@Override
public void run() {
runOnUiThread(new Runnable() {
@Override
public void run() {
sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
String timer = sdf.format(new Date(counter * 1000L));
timerText.setText(timer);
counter++;
}
});
}};
timer.schedule(timerTask, 0, 1000);
但是,当我重新访问活动时,计时器的间隔会增加。如果我第一次重新访问它,则间隔变为2,即
0时, 00:02, 00:04, 等
再次重新审视它会使间隔为3,即
0时, 00:03, 00:06, 等
间隔不断增加。 我推断runOnUIThread方法正在运行 n 次,其中 n 是onCreate被访问的次数,但我不知道该怎么做它
答案 0 :(得分:0)
使用Timer构造函数将其指定为守护进程new Timer(true)
,这样如果它退出,则计时器线程也退出。
在退出cancelling或onDestroy之前,请先考虑onPause计时器。