我在Activity的onPause生命周期事件中关闭了一个AsyncTask,所以当有人离开应用程序时它不会运行,但它会继续运行,尽管如此.我添加了一些跟踪,这个片段显示了问题.
Trace.d(TAG,"Task state: " + myTask.getStatus() );
myTask.cancel(true);
Trace.d(TAG,"Task state: " + myTask.getStatus() );
Run Code Online (Sandbox Code Playgroud)
输出:
Task state: RUNNING
Task state: RUNNING
Run Code Online (Sandbox Code Playgroud)
为什么cancel()方法对任务的状态没有任何影响?我注意到文档说取消方法将"尝试"停止任务,但在什么情况下会失败?该任务肯定正在运行,因为它每十秒输出一次日志输出,如上所示,其状态将返回为运行状态.
更新:我添加了跟踪以显示isCancelled()状态,并且会更改.所以取消(true)的调用是将取消状态从false更改为true,但显然对Status没有影响,或者停止线程.