我想在我的应用程序的许多地方使用一个对象:片段,活动,甚至在服务中。
有没有比我在下面做的更好的方法?
我也想知道是否还有其他好的做法。
将对象设为静态还是非静态更好?
当我从任何活动或后台服务调用它时,Application类是否始终保留该对象?
public class MyApplication extends Application {
private static DaoMaster.DevOpenHelper dao;
@Override
public void onCreate() {
super.onCreate();
dao = new DaoMaster.DevOpenHelper(this,
getString(R.string.db_name), null);
}
public static DaoMaster.DevOpenHelper getDao() {
return dao;
}
public static void setDao(DaoMaster.DevOpenHelper dao) {
MyApplication.dao = dao;
}
}
答案 0 :(得分:1)
我不喜欢静态字段和方法。我认为OOP范式是错误的。您可以通过多线程访问数据库来解决许多问题。
在您的情况下,您可以将对象保存为非静态字段,并从活动或服务中访问它,如下所示:
((MyApplication) getApplication()).getDao()
对于像您这样的情况,您可以使用依赖注入。在android上有很好的lib(Dagger by squareUp)。有了它,你可以轻松地注入"你在许多地方反对。