android: cancel(true) 不会终止 AsyncTask

标签 android android-asynctask kill

我正在使用 Android AsyncTask 来从服务器下载文件。下载文件后,我试图终止 AsyncTask。

protected void onPostExecute(Void result) {
    MyTask.cancel(true);
}

但它仍然在运行(我可以从 Eclipse 的“调试”窗口中看到它)。 如何杀死AsyncTask?

最佳答案

当AsyncTask运行完成时,onPostExecute()将被调用。线程将会死亡。垃圾收集器会清理它。你不需要做任何事。你所做的事情是多余的。

除此之外,调用“取消”会向线程发送中断信号。如果你的进程可以被中断,它将停止阻塞并继续执行。然后,您必须在 doInBackground() 中调用 isCancelled(),如果 isCancelled() 为 true,则从该方法返回。之后,onCanceled()onPostExecute() 将被调用,线程将像平常一样自行终止。

关于android: cancel(true) 不会终止 AsyncTask,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12056405/

相关文章:

java - Java中立即杀死线程

linux - 搜索并终止进程,并在 bash 脚本上启动新进程

java - 将应用程序设置为在到达时间时发送 SMS MESSAGE

android - HTC Sense 上的 AsyncTask 错误

android - Nativescript 中的 RAW 文件(音频)文件夹

android - 带有 InputStreamReader 的 BufferedReader 提供了完成的 HTTPResponse 导致 NetworkOnMainThreadException

java - AsyncTask 中的 Toast

linux - 如何使用Pid通过Ant命令杀死linux进程

Android 动态壁纸 onOffsetsChanged xPixelOffset 似乎没有返回真实的像素偏移

java - AndroidX : Parcelable encountered IOException writing serializable object only in Android version 10 devices