【问题标题】:SQLiteDatabase.openDatabase(...) vs getWritableDatabaseSQLiteDatabase.openDatabase(...) 与 getWritableDatabase
【发布时间】:2013-05-04 11:23:03
【问题描述】:

我在资产文件夹中将一个数据库与我的应用程序捆绑在一起。 在第一个活动中,我将数据库完美复制到正确的位置(这里没问题)。

我的问题;是不是更好用 openDatabase(字符串路径,SQLiteDatabase.CursorFactory 工厂,int 标志) 还是使用 SQLiteOpenHelper 类的 getWritableDatabase 方法?

哪个更有效率? 我习惯使用getWritableDatabase方法,它需要传递Context,但我只是觉得我可以不用它,因为我不需要SQliteOpenHelper的onUpgrade或onCreate函数。

【问题讨论】:

    标签: android database sqlite


    【解决方案1】:

    getWritableDatabase只是SQLiteOpenHelper的开库方式。

    如果你不需要SQLiteOpenHelper,你也不需要打电话给getWritableDatabase

    【讨论】:

    • 如果我使用 SQliteDatabase.openDatabase() 如何在 Activity 生命周期中优化它?例如,在 onPause 期间释放资源。使用 db.close() 是否安全(其中 db 是我的 SQLiteDatabase 对象)谢谢
    • 这是一个不同的问题。并优化什么?速度?记忆?可维护性?
    • 我认为在 onPause() 期间始终关闭所有打开的数据库以释放内存是一个好习惯,SQLiteOpenHelper close() 方法非常适合,在 onResume() 期间 open() 是完美的。但是使用 SQLiteDatabase.openDatabase(),我找不到合适的方法来释放内存或在离开 Activity 时断开数据库。
    • SQLiteDatabase 派生自 SQLiteClosable,后者具有 close method
    • 感谢@CL,我选择了 openDatabase() 方法,它按预期工作。
    猜你喜欢
    • 2011-09-05
    • 2011-09-29
    • 2013-03-09
    • 2017-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多