android-asynctask – Android上下文弱参考

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

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

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

解决方法

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

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

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...