我正在尝试在我的应用程序中使用ORMLite (因为显然自己编写所有CRUD方法是“更难而不是更聪明”的开发方式),但我遇到了一个问题:我看到的许多示例项目都有扩展OrmLiteBaseActivity的活动。通常情况下,我的活动会扩展AppCompatActivity。
这会是一个问题吗?OrmLiteBaseActivity是否扩展了AppCompatActivity anywhere?或者,如果我选择ORMLite,我是否必须牺牲AppCompat?
发布于 2016-08-09 20:31:25
我不熟悉ORMLite,但是我不建议放弃AppCompat,转而使用ORMLite。那么你能做什么呢?
通过查看ORMLiteBaseActivity的源代码,您可以看到这个类扩展了Activity而不是AppCompatActivity,这对于库来说基本上是有意义的。此外,您可以看到这个类并没有做太多的事情。
所以选项#1不要使用ORMLiteBaseActivity,或者选项#2为你的应用创建一个自己的基础活动,它扩展了AppCompatActivity,并与ORMLiteBaseActivity做同样的事情。换句话说:可以选择复制项目中的类并简单地替换extends部件。
发布于 2021-03-25 08:10:55
至于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();https://stackoverflow.com/questions/38841957
复制相似问题