我正在考虑为Context创建一个单独的包装器,这样我的模型对象可以在必要时打开并从数据库连接中读取。我的模型对象无法访问Context
,我希望避免将对象的Context
引用传递给对象。
我打算在此单例中添加对Context
返回的Application.getApplicationContext()
的引用。这个单例对象将在我的自定义Application
实例中初始化,然后才需要或有机会使用它。
任何人都可以想到不这样做的原因吗?
答案 0 :(得分:2)
我建议您考虑一下不将应用程序上下文的引用传递给模型对象的原因。
使用单身人士有各种明显的缺点。我不会在这里详细介绍,但您可能需要考虑:
如果您没有将对上下文的引用传递给应用程序的其他部分的正当理由,那么您可能应该考虑其他一些模式 - 工厂可能是一种可能的解决方案,另一种是另一种服务。
答案 1 :(得分:0)
我不确定我是否接受了你的想法,但这是为我工作的:
public class MyApp extends Application {
private static MyApp instance;
@Override
public void onCreate() {
super.onCreate();
instance = this;
// ...
}
public static MyApp getInstance(){
return instance;
}
// misc helper methods
}
答案 2 :(得分:0)
粘贴此处以保留格式。
public class ContextContainer
{
private static boolean initialized;
private static Context context;
private ContextContainer()
{
//
}
public static synchronized void setApplicationContext(Context context)
{
if (!initialized) {
ContextContainer.context = context;
initialized = true;
} else {
throw new RuntimeException("ApplicationContext has already been set!");
}
}
public static synchronized Context getApplicationContext()
{
return context;
}
}