在实例化Loader / AsyncTask时是否应该使用WeakReference to Context对象?

时间:2014-07-15 14:45:54

标签: java android android-asynctask android-loadermanager android-loader

我遇到的信息是,对于Context对象的WeakReference应该与AsyncTasks和Loaders一起使用,以避免在AsyncTask完成之前Activity被销毁的情况下的内存泄漏。但我不清楚是否有任何对Context的引用应该是一个弱引用 - 包括AsyncTask实例化时的引用。那么应该说,AsyncTaskLoader会以这种方式实例化吗?

public abstract class BaseLoader extends AsyncTaskLoader<Response> {

    public BaseLoader(WeakReference<Context> context){
        super(context.get());
    }

    ...
}

或者可以使用实际的Context对象来实例化AsyncTastkLoader类,但是如果AsyncTask中的其他任何地方需要WeakReference,请保留WeakReference吗?

1 个答案:

答案 0 :(得分:2)

这对你没有帮助,因为你要将上下文传递给super()。如果超级函数存储它,它将负责它自己的弱引用(或不是)。这仅适用于长期存储上下文的情况。