0

我的应用程序就像启动器一样工作,当从我的应用程序中启动应用程序时,会启动一个计时器,让您只玩一定的时间。但是,如果您返回我的启动器,我希望计时器暂停,然后在您启动另一个应用程序后再次启动。我有以下内容:

    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;
    }

编辑:请参阅答案,因为事实证明重新排序代码摘录对于正确取消后台任务是必要的。

4

1 回答 1

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
}
于 2013-10-10T14:19:16.360 回答