我想出如果我在中间运行AsyncTask时退出一个活动,当我再次尝试启动该活动时,我将不得不等到之前的AsyncTask在新的AsynTask启动之前完成.我尝试了thread.sleep和systemclock.sleep,它给了我相同的结果.这是有道理的,因为我猜我关闭和打开的线程是相同的.如果用户退出活动,它有一种方法可以取消AsyncTask吗?因为第二次用户输入相同的活动,他不必等到上一次完成.我在onPause()中尝试了asyntask.cancel(true),它不起作用,同样的事情发生了.
据我了解,Thread.sleep()和SystemClock.sleep()之间的唯一区别是Thread.sleep()可以被中断.就是这样的:
SystemClock.sleep(10*1000);
Run Code Online (Sandbox Code Playgroud)
将调用线程休眠10秒,就是这样,你只需要等待.鉴于:
Thread.sleep(10*1000);
Run Code Online (Sandbox Code Playgroud)
也会在调用线程中休息10秒钟.但是如果你有来自另一个线程的睡眠线程的引用,你现在可以选择:
sleepingThread.interrupt();
Run Code Online (Sandbox Code Playgroud)
这有效地唤醒了睡眠中的睡眠.
在您的问题的上下文中,哪个更适合AsyncTask,我认为它仍然完全取决于您的要求.我当然不知道你的确切代码,但鉴于你的任务,doInBackground显然正在做一些睡眠,并且你希望能够在任意时间取消你的任务,Thread.sleep()可能更有意义.
| 归档时间: |
|
| 查看次数: |
4258 次 |
| 最近记录: |