
我有一个Activity类,它有一个引用AsyncTask实例的属性,这个AsyncTask也有一个对这个Activity的引用.
从AsyncTask的onPostExecute()我想将Activity的引用设置为AsyncTask为null(通过将AsyncTask实例引用到Activity的引用).这是一个好习惯吗?
我在该方法的最后一行代码中执行此 *** 作,因为我实际上是在向垃圾收集器说它可以删除该实例,因为它不再被任何其他对象(Activity)引用.这是正确的,还是我错了?
编辑:下面我的回答恢复了我使用的最终解决方案.
谢谢!
解决方法:
为什么你需要首先保持对AsyncTask的引用?
什么时候不再需要参考?在任务完成之前会发生什么需要您持有对活动的引用?
我所说的是,你可以在没有引用的情况下启动异步任务,这样你的问题就会消失.但如果由于某种原因你需要参考,那么通过更多地解释你的具体情况,我们可以建议一个更好的解决方案.
编辑
你主要关注的不是泄漏活动,而不是相反.如果你真的想要正确地清理所有引用,我会在异步任务上提供一个附加/分离方法,以便活动可以在nessecary时从异步任务中附加和分离自己,并且还提供一个使异步任务无效的活动方法如果活动仍然附加,则从您的异步任务中重新调用并调用它.不要直接做.异步任务不应直接修改活动.如果可能的话甚至将异步任务移动到新文件中,不要将其作为活动的内部类,这会导致泄漏.
总结以上是内存溢出为你收集整理的android – 是否可以在onPostExecute()中将AsyncTask的引用设置为null?全部内容,希望文章能够帮你解决android – 是否可以在onPostExecute()中将AsyncTask的引用设置为null?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)