我正在尝试在我的应用程序中使用ORMLite(因为显然我自己编写的所有CRUD方法都是“更难以更聪明”的开发方式),但我遇到了一个问题:我看到的很多示例项目都有扩展OrmLiteBaseActivity的活动。通常我的活动会扩展AppCompatActivity。
这会成为一个问题吗? OrmLiteBaseActivity是否可以在任何地方扩展AppCompatActivity?或者,如果我使用ORMLite,我是否必须牺牲AppCompat?
答案 0 :(得分:1)
我不熟悉ORMLite但是我不建议放弃AppCompat而使用ORMLite。那你能做什么?
通过查看ORMLiteBaseActivity的来源,您可以看到此类扩展Activity
而不是AppCompatActivity
,这对于库来说基本上是有意义的。此外,您可以看到该课程做得不多。
因此,选项#1不使用ORMLiteBaseActivity或选项#2为您的应用创建自己的基本活动,扩展AppCompatActivity
并与ORMLiteBaseActivity相同。换句话说:在项目中复制类并简单地替换extends
部分是一种选择。
答案 1 :(得分:0)
至于 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;
}
}
因此,在我的例子中,您可以像这样从您的活动中调用 DatabaseHelper 的任何方法 listAllEntries():
getHelper().listAllEntries();