微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

android-asynctask – Android上下文弱参考

在我的一些应用程序中,我使用一些单例对象作为“管理器”.我在Application.onCreate中实例化它们,然后将它传递给ApplicationContext,我将它存储在WeakReference中.

一些“管理器”方法在从Activity调用后启动后台任务,因此我将Activity的上下文传递给方法,并将WeakReference保存到该方法中(并在AsyncTask中使用它).当WeakReference设置为新Activity的上下文时,该引用将保留到下一次Activity调用转到后台方法.

我的问题是,ApplicationContext是否必须保存在WeakReference中,并且保存Activity的上下文是否存在任何问题?

解决方法

将WeakReference保留在活动的上下文中的原因是,您不会保留对已经或应该已经销毁的活动的引用.应用程序不存在此类问题.在这种情况下,WeakReference是不必要的.

由于您没有详细说明您正在使用它的内容,因此很难评论您对活动上下文的使用.你交换不同活动的背景听起来有点怀疑.如果你真的需要特定活动的上下文,这可能没问题,但是如果你只想要一个有效的Context与AsyncTask一起使用,那么我会考虑重新思考你的方法.它可能会起作用,但它有点hacky.根据您的需要,还有其他选项可能更合适:IntentServiceLoaders是需要考虑的选项.

原文地址:https://www.jb51.cc/android/317005.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐