Android OrmLiteBaseActivity与AppCompativity?

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。那你能做什么呢

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


这会成为一个问题吗?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();