【发布时间】:2013-03-28 11:30:46
【问题描述】:
我的应用程序中有一个计时器,它每 15 秒启动一次 AsyncTask。
Timer timer = new Timer();
public void AsynchTaskTimer() {
final Handler handler = new Handler();
TimerTask timertask = new TimerTask() {
@Override
public void run() {
handler.post(new Runnable() {
public void run() {
try {
new updateGPSTask().execute();
} catch (Exception e) {
// TODO Auto-generated catch block
}
}
});
}
};
timer.schedule(timertask, 0, 15000); // execute in every 15sec
}
这是从onCreate() 方法启动的。
当我调用另一个 Activity 时,我需要取消这个计时器,我在 Main Activity 中的 onPause() 方法上使用了 timer.cancel()。
现在,当我返回主活动时,我需要重新启动计时器。我尝试在onRestart() 方法中重新启动AsynchTaskTimer(),但我得到了java.lang.IllegalStateException: Timer was canceled。
如何重新启动计时器?
【问题讨论】:
-
在 onpause 中将计时器设置为 null 并像 timer = new Timer();并在旧的散列对象被取消时启动它,除非重新启动到新对象,否则它不能重新启动
-
为什么要同时使用处理程序和计时器?
标签: android timer android-asynctask