Android OrmLiteBaseActivity与AppCompativity?
我试图在我的应用程序中使用ORMLite(因为显然,自己编写所有CRUD方法是“更难而不是更聪明”的开发方式),但我遇到了一个问题:我看到的许多示例项目都有扩展OrmLiteBaseActivity的活动。通常我的活动会扩展到我的活动Android OrmLiteBaseActivity与AppCompativity?,android,android-activity,orm,android-appcompat,ormlite,Android,Android Activity,Orm,Android Appcompat,Ormlite,我试图在我的应用程序中使用ORMLite(因为显然,自己编写所有CRUD方法是“更难而不是更聪明”的开发方式),但我遇到了一个问题:我看到的许多示例项目都有扩展OrmLiteBaseActivity的活动。通常我的活动会扩展到我的活动 这会成为一个问题吗?OrmLiteBaseActivity是否将AppCompativity扩展到任何地方?或者如果我使用ORMLite,我必须牺牲AppCompat吗?我不熟悉ORMLite,但我不建议放弃AppCompat而选择ORMLite。那你能做什么呢
这会成为一个问题吗?OrmLiteBaseActivity是否将AppCompativity扩展到任何地方?或者如果我使用ORMLite,我必须牺牲AppCompat吗?我不熟悉ORMLite,但我不建议放弃AppCompat而选择ORMLite。那你能做什么呢 通过查看的源代码,您可以看到该类扩展了
Activity
,而不是AppCompatActivity
,这对于库来说基本上是有意义的。此外,您可以看到该类并没有做多少工作
因此,选项#1不要使用ORMLiteBaseActivity或选项#2为您的应用程序创建自己的基本活动,该活动扩展了AppCompatActivity,并且与ORMLiteBaseActivity的功能相同。换句话说:可以选择在项目中复制类,并简单地替换
扩展部分。至于2021年,实际上,您可以做得更好。因此,您不应该为了OrmListeBaseActivity而牺牲AppCompativeActivity,您可以同时使用它们
首先,导入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;
}
}
因此,在我的示例ListalEntries()中,您可以从活动中调用DatabaseHelper的任何方法,如下所示:
getHelper().listAllEntries();