我有一个AsyncTask作为游戏倒计时器。当它完成倒计时,它会显示时间到结束屏幕,并更新屏幕上显示的计时器。一切都很好,但是当按下游戏中的暂停按钮时,我需要能够暂停和恢复计时器。
如果我取消它并尝试重新执行它,它会崩溃并出现IllegalStateException异常。如果我取消它并在其位置实例化一个新的AsyncTask,旧的任务将再次运行,并且新的任务也将同时运行。
是否有一种使用AsyncTask取消/暂停计时器并重新启动它的方法,或者我应该采用不同的方法来解决这个问题?
编辑:
这是我解决方案的代码:
mhandler = new Handler();
如果我取消它并尝试重新执行它,它会崩溃并出现IllegalStateException异常。如果我取消它并在其位置实例化一个新的AsyncTask,旧的任务将再次运行,并且新的任务也将同时运行。
是否有一种使用AsyncTask取消/暂停计时器并重新启动它的方法,或者我应该采用不同的方法来解决这个问题?
编辑:
这是我解决方案的代码:
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)`
我不确定这是否是最好的方法,但它对我有效。