【问题标题】:OrmLiteBaseActivity vs. AppCompatActivity?OrmLiteBaseActivity 与 AppCompatActivity?
【发布时间】:2023-04-01 20:41:01
【问题描述】:

我正在尝试在我的应用程序中使用 ORMLite(因为显然自己编写所有 CRUD 方法是“更难而不是更聪明”的开发方式),但我遇到了一个问题:我看到的很多示例项目都有扩展 OrmLiteBaseActivity 的活动。通常我的活动会扩展 AppCompatActivity。

这会是个问题吗? OrmLiteBaseActivity 是否在任何地方扩展 AppCompatActivity?或者如果我使用 ORMLite,我是否必须牺牲 AppCompat?

【问题讨论】:

    标签: android android-activity orm android-appcompat ormlite


    【解决方案1】:

    我不熟悉 ORMLite,但我不建议放弃 AppCompat 以支持 ORMLite。那你能做什么呢?

    通过查看ORMLiteBaseActivity 的源代码,您可以看到这个类扩展了Activity 而不是AppCompatActivity,这对于库来说基本上是有意义的。此外,您可以看到该课程并没有做太多事情。

    所以选项 #1 不要使用 ORMLiteBaseActivity 或选项 #2 为您的应用创建一个自己的 Base Activity,它扩展 AppCompatActivity 并且与 ORMLiteBaseActivity 相同。换句话说:可以选择复制项目中的类并简单地替换 extends 部分。

    【讨论】:

      【解决方案2】:

      至于 2021 年,其实你可以做得更好。所以你不应该为了 OrmLiteBaseActivity 而牺牲 AppCompatActivity,你可以同时使用它们。

      首先,导入 OpenHelperManager:

      import com.j256.ormlite.android.apptools.OpenHelperManager;
      

      在你的活动中定义对象

      private DatabaseHelper databaseHelper = null;
      

      使用下面的getHelperMethod

      private DatabaseHelper getHelper() {
          if (databaseHelper == null) {
              databaseHelper = OpenHelperManager.getHelper(this, DatabaseHelper.class);
              // we don't need  the following line that much
              // databaseHelper.getWritableDatabase(); // explicitly calls onCreate method of DatabaseHelper 
              //where you create tables for example, again it will be called anyway
          }
          return databaseHelper;
      }
      

      在您的活动完成时覆盖您的 AppCompatActivity 的 OnDestroy 以释放资源

       @Override
      protected void onDestroy() {
          super.onDestroy();
          if (databaseHelper != null) {
              OpenHelperManager.releaseHelper();
              databaseHelper = null;
          }
      }
      

      因此,您可以像这样从您的活动中调用我的案例 listAllEntries() 中的 DatabaseHelper 的任何方法:

      getHelper().listAllEntries();
      

      【讨论】:

        猜你喜欢
        • 2017-12-07
        • 1970-01-01
        • 1970-01-01
        • 2020-12-11
        • 1970-01-01
        • 2015-12-30
        • 2023-01-21
        • 2015-11-07
        • 1970-01-01
        相关资源
        最近更新 更多