【发布时间】:2010-03-19 02:12:48
【问题描述】:
我有一个AsyncTask,作为我的游戏的倒计时。当它完成倒计时时,它会显示超时结束屏幕,它还会更新屏幕上显示的计时器。一切正常,除了我需要能够在按下游戏中的暂停按钮时暂停和恢复。
如果我取消它并尝试重新执行它,它会崩溃并显示IllegalStateException。
如果我取消它并在其位置实例化一个新的 AsyncTask,旧的 AsyncTask 将再次开始运行,而新的 AsyncTask 将同时运行。
有没有办法取消/暂停计时器并使用AsyncTasks 重新启动它,或者我应该采取不同的方式来执行此操作?
编辑:
这是我为解决方案所做的:
mhandler = new Handler();
mtimerTask = new Runnable(){
public void run(){
mtimer -= 1;
if(mtimer == 0)
{
mhandler.removeCallbacks(this);
}
mhandler.postDelayed(this, 1000);
}
};
mhandler.removeCallbacks(mtimerTask);
mhandler.post(_timerTask)`
不确定这是否是最好的方法,但它对我有用。
【问题讨论】: