在我的活动中,我有一个下载一系列图像的异步任务......(可能需要一些时间,具体取决于图像的大小)......在执行异步任务之前,我会显示一个进度对话框onPreExecute
和一个通知(当用户单击通知时,它会通过进度对话框重定向到我的活动)。当我的异步任务完成时onPostExecute
,我删除对话框和通知..我通过使用onRetainNonConfigurationInstance
来保存我的异步任务来处理屏幕方向,这样当屏幕旋转时,我检查任务是否仍在运行,如果它仍然显示进度对话框运行onCreate
问题:有时:我的 asynctask 只下载 1 个文件,似乎它被杀死了......(在 logcat 中也不例外)......结果,我的通知总是在那里,我的进度对话框也......并且它们仍然存在无限期……
我在那里尝试了 Jeff Axelrod 的解决方案:如何确保 AsyncTask 在我的活动被杀死之前完成?:
It looks like if I override the onPause() event in my activity, and from within the overridden onPause(), I call cancel(false) on the AsyncTasks, then the activity is not destroyed until the AsyncTasks are completed.
似乎可以解决问题,但问题是 myonPostExecute
不再被调用;所有图像下载正常但未onPostExecute
执行,通知和进度对话框仍然永远存在。
等待您的解决方案伙计们!我只为短任务阅读了使用 asyntask;线程和处理程序的使用会解决我的问题吗?如果后者没有完成,android会杀死我的活动或线程吗?