0

如果我有一个无限期运行的 AsyncTask 并且 Android 决定它需要终止该任务以释放内存或因为设备进入睡眠模式(用户按下电源按钮),那么 AsyncTask 中是否有某种方式来获得通知从即将被杀死的操作系统,以便可以采取行动来完成任何未完成的任务?

4

1 回答 1

1

给你一个简短的答案:

AsyncTask 的生命周期与它关联的进程生命周期一样长。如果 AsyncTask 的进程仍在运行(即使在后台),操作系统将永远不会杀死它。

另请注意,AsyncTask 独立于启动它的 Activity 运行。Activity 可能被销毁,而 AsyncTask 仍然存在,直到进程被销毁。

编辑您需要在 doInBackground() 方法中调用 isCancelled() 以确保当操作系统销毁 AsyncTask 时, doInBackground 完成以便执行 onCancelled() 方法。

所以总结一下:在 doInBackground 方法中总是检查 isCancelled 布尔函数。如果返回 true,则从 doInBackground 返回。将自动执行 onCancelled 函数而不是 onPostExecute。在那里,您可以放置​​要在其死亡之前执行的代码。

于 2013-06-19T09:32:51.683 回答