在自定义Application类中保存Object Store是一种好习惯

时间:2014-06-24 05:53:38

标签: java android performance

我想在我的应用程序的许多地方使用一个对象:片段,活动,甚至在服务中。

有没有比我在下面做的更好的方法?

我也想知道是否还有其他好的做法。

将对象设为静态还是非静态更好?

当我从任何活动或后台服务调用它时,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;
   }
}

1 个答案:

答案 0 :(得分:1)

我不喜欢静态字段和方法。我认为OOP范式是错误的。您可以通过多线程访问数据库来解决许多问题。

在您的情况下,您可以将对象保存为非静态字段,并从活动或服务中访问它,如下所示:

((MyApplication) getApplication()).getDao()

对于像您这样的情况,您可以使用依赖注入。在android上有很好的lib(Dagger by squareUp)。有了它,你可以轻松地注入"你在许多地方反对。