AsyncTasks和取消

时间:2013-07-12 18:13:59

标签: android asynchronous

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

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

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

1 个答案:

答案 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
}