我的应用程序像启动器一样工作,当从我的应用程序中启动应用程序时,计时器启动,允许您只玩一定时间。但是,如果您返回我的启动器,我希望计时器暂停,然后在启动另一个应用程序后再次启动。我有以下内容:
protected String doInBackground(String... strings) {
while (playTime < ALLOWED_TIME) {
try {
Thread.sleep(1000);
long endTime = System.nanoTime() / Constants.NANO_SECONDS;
int endTimeSec = (int) endTime;
playTime = endTimeSec - START_TIME;
if (stored.getBoolean("Foreground", false)) {
break;
cancel(true); //run this code if Arcade app is exited before time expires
}
} catch (Exception e) {
e.printStackTrace();
}
}
return null;
}
编辑:请参阅答案,因为事实证明重新排序代码摘录是正确取消后台任务所必需的。
答案 0 :(得分:0)
引用发布的代码,以下代码片段有效地取消后台线程以及后台发生的相关循环:
if (true) {
cancel(true); //this code cancels the background thread, breaks the loop therein
break;
}
protected void onCancelled(){
//anything to be run on main thread after cancellation
}