我有一个AsyncTask,正在其中运行数据库查询。为此,我的AsyncTask子类包含一个ContentResolver类型的字段。我想知道它是否安全或是否会导致内存泄漏,例如在上下文(AsyncTask and Contexts)的情况下?
这里是一个解决方案,请使用您的应用程序所拥有的应用程序上下文的静态引用
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()。
从here,我可以看到ContentResolver保留了对创建它的上下文的引用(我想)。
但是您总是可以从ApplicationContext使用ContentResolver,据说可以安全使用。