gpt4 book ai didi

Android AsyncTask 取消时不会停止,为什么?

转载 作者:IT老高 更新时间:2023-10-28 23:35:26 27 4
gpt4 key购买 nike

我在 Activity 的 onPause 生命周期事件中关闭了一个 AsyncTask,因此当有人离开应用程序时它不会运行,但尽管如此,它仍会继续运行。我添加了一些跟踪,这个 fragment 显示了问题。

    Trace.d(TAG,"Task state: " + myTask.getStatus() );
myTask.cancel(true);
Trace.d(TAG,"Task state: " + myTask.getStatus() );

输出:

Task state: RUNNING
Task state: RUNNING

为什么 cancel() 方法对任务的状态没有任何影响?我注意到文档说取消方法将“尝试”停止任务,但在什么情况下会失败?该任务肯定正在运行,因为它每十秒输出一次日志输出,并且如您所见,它的状态返回为正在运行。

更新:我添加了跟踪以向我显示 isCancelled() 状态,并且该状态确实发生了变化。所以对 cancel(true) 的调用将取消状态从 false 更改为 true,但显然对状态没有影响,或者停止线程。

最佳答案

请记住,您的 Activity 和 AsyncTask 是两个独立的线程。所以即使你取消了 AsyncTask,取消任务的代码可能还没有运行!这就是为什么即使在修复错误之后您仍然看到 AsyncTask 仍在运行的原因。我认为在您的 AsyncTask 中的 doInBackground() 完成之前,状态不会改变。 (所以请确保您正在检查 isCancelled() 并在您被取消时提前返回!)

关于Android AsyncTask 取消时不会停止,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4959628/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com