OrmLiteBaseActivity 与 AppCompatActivity?
OrmLiteBaseActivity vs. AppCompatActivity?
我正在尝试在我的应用程序中使用 ORMLite(因为显然我自己编写所有 CRUD 方法是 "harder not smarter" 的开发方式),但我 运行 遇到了一个问题:很多我看到的示例项目有扩展 OrmLiteBaseActivity 的活动。通常我的活动扩展 AppCompatActivity。
这会成为一个问题吗? OrmLiteBaseActivity 是否在任何地方扩展 AppCompatActivity?或者,如果我使用 ORMLite,是否必须牺牲 AppCompat?
我不熟悉 ORMLite,但是我不建议放弃 AppCompat 以支持 ORMLite。那你能做什么?
通过查看 ORMLiteBaseActivity 的源代码,您可以看到此 class 扩展了 Activity
而不是 AppCompatActivity
,这对于库来说基本上是有意义的。此外,您可以看到 class 没有做太多事情。
所以选项 #1 不要使用 ORMLiteBaseActivity 或选项 #2 为您的应用程序创建一个自己的基础 Activity 扩展 AppCompatActivity
并且与 ORMLiteBase 做同样的事情Activity。换句话说:可以选择在您的项目中复制 class 并简单地替换 extends
部分。
至于2021年,其实可以做得更好。所以你不应该为了 OrmLiteBaseActivity 而牺牲 AppCompatActivity,你可以同时使用它们。
首先,导入OpenHelperManager:
import com.j256.ormlite.android.apptools.OpenHelperManager;
在您的 activity
中定义对象
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 以在 activity 完成后释放资源
@Override
protected void onDestroy() {
super.onDestroy();
if (databaseHelper != null) {
OpenHelperManager.releaseHelper();
databaseHelper = null;
}
}
所以在我的案例中,您可以从 activity 调用 DatabaseHelper 的任何方法 listAllEntries() ,如下所示:
getHelper().listAllEntries();
我正在尝试在我的应用程序中使用 ORMLite(因为显然我自己编写所有 CRUD 方法是 "harder not smarter" 的开发方式),但我 运行 遇到了一个问题:很多我看到的示例项目有扩展 OrmLiteBaseActivity 的活动。通常我的活动扩展 AppCompatActivity。
这会成为一个问题吗? OrmLiteBaseActivity 是否在任何地方扩展 AppCompatActivity?或者,如果我使用 ORMLite,是否必须牺牲 AppCompat?
我不熟悉 ORMLite,但是我不建议放弃 AppCompat 以支持 ORMLite。那你能做什么?
通过查看 ORMLiteBaseActivity 的源代码,您可以看到此 class 扩展了 Activity
而不是 AppCompatActivity
,这对于库来说基本上是有意义的。此外,您可以看到 class 没有做太多事情。
所以选项 #1 不要使用 ORMLiteBaseActivity 或选项 #2 为您的应用程序创建一个自己的基础 Activity 扩展 AppCompatActivity
并且与 ORMLiteBase 做同样的事情Activity。换句话说:可以选择在您的项目中复制 class 并简单地替换 extends
部分。
至于2021年,其实可以做得更好。所以你不应该为了 OrmLiteBaseActivity 而牺牲 AppCompatActivity,你可以同时使用它们。
首先,导入OpenHelperManager:
import com.j256.ormlite.android.apptools.OpenHelperManager;
在您的 activity
中定义对象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 以在 activity 完成后释放资源
@Override
protected void onDestroy() {
super.onDestroy();
if (databaseHelper != null) {
OpenHelperManager.releaseHelper();
databaseHelper = null;
}
}
所以在我的案例中,您可以从 activity 调用 DatabaseHelper 的任何方法 listAllEntries() ,如下所示:
getHelper().listAllEntries();