如果我无限期地运行AsyncTask并且Android决定它需要终止任务以释放内存或者因为设备进入睡眠模式(用户按下电源按钮),AsyncTask中是否存在某种方式从操作系统获得通知,它即将被杀死,以便采取行动完成任何未完成的任务?
答案 0 :(得分:1)
给你一个简短的回答:
只要与生命联系在一起的过程,AsyncTask就会存在。如果其进程仍在运行(即使在后台),操作系统也永远不会杀死AsyncTask。另请注意,AsyncTask独立于启动它的Activity运行。可能会销毁Activity并且AsyncTask仍然存在,直到进程被销毁。
EDIT 您需要在doInBackground()方法中调用isCancelled()以确保在OS销毁AsyncTask时,doInBackground完成以便执行onCancelled()方法。
总而言之:在doInBackground方法中,总是检查isCancelled布尔函数。如果返回true,则从doInBackground返回。自动执行onCancelled函数而不是onPostExecute。你可以在那里放置你想要执行的代码。