在AsyncTask中保留对ContentResolver的引用而不泄漏内存是否安全?

问题描述 投票:2回答:2

我有一个AsyncTask,正在其中运行数据库查询。为此,我的AsyncTask子类包含一个ContentResolver类型的字段。我想知道它是否安全或是否会导致内存泄漏,例如在上下文(AsyncTask and Contexts)的情况下?

android memory-leaks android-asynctask android-contentresolver
2个回答
0
投票

这里是一个解决方案,请使用您的应用程序所拥有的应用程序上下文的静态引用

public class MyApplication extends Application
{
    private static Context context;

    public static ContentResolver getContentResolverStatic()
    {
         return context.getContentResolver();
    }

    @Override
    public void onCreate()
    {
        super.onCreate();
        this.context = this.getApplicationContext();
    }
}

现在只需从Asynctask中调用MyApplication.getContentResolverStatic()。


0
投票

here,我可以看到ContentResolver保留了对创建它的上下文的引用(我想)。

但是您总是可以从ApplicationContext使用ContentResolver,据说可以安全使用。

© www.soinside.com 2019 - 2024. All rights reserved.