【发布时间】:2015-08-12 10:45:50
【问题描述】:
我已经阅读了几篇关于将上下文传递给适配器或其他内容的文章,并且我制作了某种上下文容器来获取应用程序上下文:
import android.content.Context;
public class ContextHolder {
private static ContextHolder ourInstance = new ContextHolder();
private Context context;
public static ContextHolder getInstance() {
return ourInstance;
}
private ContextHolder() {
context = null;
}
public void setContext(Context context){
this.context = context;
}
public Context getApplicationContext(){
return context;
}
}
然后在 MainActivity 我创建 ContextHolder 对象并像这样设置上下文:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ContextHolder contextHolder = ContextHolder.getInstance();
contextHolder.setContext(this.getApplicationContext());
}
在其他一些类中,我需要使用 contex:
ContextHolder contextHolder = ContextHolder.getInstance();
Resources resources = contextHolder.getApplicationContext().getResources();
问题是,我做对了吗? 它会导致内存泄漏或其他讨厌的东西吗?
【问题讨论】:
-
这会泄露上下文。不过,您可以在 ContextHolder 中使用 WeakReference。
-
应用上下文不是贯穿整个应用生命周期吗?
-
哦,是的。我的错。第二眼看到你使用了ApplicationContext。没关系我的评论。
标签: java android android-context