gpt4 book ai didi

android - 当我的 Activity 完成时,我是否应该将对 Activity Context 的引用设为空?

转载 作者:太空宇宙 更新时间:2023-11-03 13:37:37 24 4
gpt4 key购买 nike

当我的 Activity 完成时,将对 Activity Context 的引用设为 null 是一个好习惯吗?我有 3 个 AsyncTask,每个都可以同时在多个实例中运行。在 onPostExecute() 中更新 UI。清空 onDestroy() 中的所有 Activity Context 引用将非常困难并且会使代码变得困惑。什么是最好的事情?

最佳答案

检查 WeakAsyncTask来自 Google 的一个示例,该异步任务不会在 Activity 生命周期之外保持引用 Activity ,以及 BetterAsyncTask来自 DroidFu 的一个连接 AsyncTasks 的方法的例子,这样它们就可以重新连接到新的 Activity 实例(例如,在轮换之后);用法示例是 here .

为短期操作(例如,单个小网络请求或小文件写入)保留对 Activity 的引用可能没有太大危害,但如果任务有可能堆积起来,则可能会导致问题.例如,如果您的应用程序在创建时从服务器读取一个 200KB 的 XML 文件,假设在 EDGE 上可能需要 1 分钟或更长时间,那么快速打开/关闭手机 3 或 4 次可能会导致保留 4 个 Activity 实例 - - 在这种情况下,您可能会很快耗尽内存,更不用说重复的工作了。

但是,对于任何真正长时间运行的进程,您绝对应该考虑 IntentService而不是 AsyncTask。它们专为与特定 Activity 无关的长期运行流程而设计 - 例如您可以发送彩信并离开 Activity 去做其他事情,并且您会得到一个愉快的 toast ,通知您完成任务何时完成。

关于android - 当我的 Activity 完成时,我是否应该将对 Activity Context 的引用设为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5017176/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com