OrmLiteBaseActivity与AppCompatActivity?

时间:2016-08-09 04:16:51

标签: android android-activity orm android-appcompat ormlite

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

这会成为一个问题吗? OrmLiteBaseActivity是否可以在任何地方扩展AppCompatActivity?或者,如果我使用ORMLite,我是否必须牺牲AppCompat?

2 个答案:

答案 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();