android - Fragment 中的 Asynctask 生命周期

标签 android android-fragments memory-leaks android-asynctask progressdialog

谁能解释一下到底发生了什么(Asynctask 的生命周期),例如,如果我有一个 Activity 和一个 Fragment 并且从这个 Fragment 我在 onPreExecute 上执行 Asynctask 我开始显示 ProgressDialog 并在某个时候关闭应用程序Asynctask 还在运行吗?

据我检查,Fragment 不会调用 onDetachonDestroyAsynctask没有到达 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/

相关文章:

android - 无法在 vlc 上播放 android h264 编码的视频

android - Home Fragment 部分可见,当前 Fragment Android Studio 的混合 View

c++ - Linux/C++ : getting user's directory without leaks

python - MySQLdb - 游标 - 内存泄漏?

c++ - 'registering' 对象放入同一个类中的静态数组时内存泄漏

Android WebView 从 WebViewClient 到 Activity 的通信

javascript - 适用于 Android 的 React Native 日期和时间选择器不起作用

android - 如果用户阅读 SMS(来自 native )(不包括 "read"),SMS 的任何其他属性是否也会被修改?

android - 当我在 Activity 中并使用 finish() 方法时,如何重新加载 fragment 页面?

java - Android,来自特定 TabBar 项目的打开 Activity