【问题标题】:Where and when to create a new SQLite database helper?何时何地创建新的 SQLite 数据库助手?
【发布时间】:2014-08-04 21:12:15
【问题描述】:

我有一个包含 2 个片段的活动。他们都使用活动创建的数据库助手。其中一个片段还创建了一个自定义列表适配器,使用了帮助器。

现在我的问题是这些元素(活动、片段、适配器)中的每一个是否应该创建自己的助手,或者他们可以/应该共享由活动创建的助手?

也许我的方法不好,那你有什么建议?

这是我目前(在我的活动中)实例化助手的地方(需要 onRestart,因为 onStart 也需要数据库访问权限):

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    dbHelper = new DBHelper(this);
}

@Override
protected void onRestart() {
    super.onRestart();
    if (dbHelper == null)
        dbHelper = new DBHelper(this);
}

@Override
protected void onResume() {
    super.onResume();
    if (dbHelper == null)
        dbHelper = new DBHelper(this);
}

@Override
protected void onPause() {
    super.onPause();
    dbHelper.close();
    dbHelper = null;
}

【问题讨论】:

    标签: android sqlite android-fragments android-lifecycle


    【解决方案1】:

    Alex Lockwood recommends using a singleton - 我尝试遵循他的方法,它简化了设置。无需关闭每个片段的数据库。您可以在每个 onCreate 中调用它。

    【讨论】:

    • 不错的链接,不过我有一个问题。不同的活动是否仍应在暂停时关闭数据库?
    • 最初我尝试在所有活动中包含它 onDestroy() 但我遇到了运行时错误。现在我只在我的主要活动中关闭它 onDestroy() 而没有其他地方。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多