我已经阅读了几篇关于将上下文传递给适配器或其他内容的文章,并且我为获取应用程序上下文做了一些contextholder:
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;
}
}
Run Code Online (Sandbox Code Playgroud)
然后在MainActivity中创建ContextHolder对象并设置上下文,如下所示:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ContextHolder contextHolder = ContextHolder.getInstance();
contextHolder.setContext(this.getApplicationContext());
}
Run Code Online (Sandbox Code Playgroud)
在其他一些类中,我需要使用contex:
ContextHolder contextHolder = ContextHolder.getInstance();
Resources resources = contextHolder.getApplicationContext().getResources();
Run Code Online (Sandbox Code Playgroud)
问题是,我做对了吗?它会导致内存泄漏或其他令人讨厌的东西吗?