谁能解释一下到底发生了什么(Asynctask
的生命周期),例如,如果我有一个 Activity
和一个 Fragment
并且从这个 Fragment
我在 onPreExecute
上执行 Asynctask
我开始显示 ProgressDialog
并在某个时候关闭应用程序Asynctask
还在运行吗?
据我检查,Fragment
不会调用 onDetach
或 onDestroy
和 Asynctask
没有到达 onPostExecute
方法或 onCancelled
最佳答案
如果我没记错的话,您应该熟悉 AsyncTask 的生命周期。如果没有,引用
https://developer.android.com/reference/android/os/AsyncTask.html
要回答为什么在进度条仍在运行时我们退出应用程序时不调用 onPostExecute 方法,我会说这是因为,AT 持有对 Activity/Context 的引用,该引用将在进度条决定时被销毁它的工作完成了(bg 任务/线程)。
关于如何处理 ATs wrt fragment 和 Activity 的非常有用的博客,作者是 Alex Lockwood。
http://www.androiddesignpatterns.com/2013/08/fragment-transaction-commit-state-loss.html
关于android - Fragment 中的 Asynctask 生命周期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40649965/