SQLiteDatabase.openDatabase(...)与getWritableDatabase有何区别?

3
我在assets文件夹中将数据库与我的应用程序捆绑在一起,在第一个活动中,我完美地将数据库复制到正确的位置(这里没有问题)。
我的问题是:使用openDatabase(String path,SQLiteDatabase.CursorFactory factory,int flags)还是使用SQLiteOpenHelper类的getWritableDatabase方法更好?
哪个更有效率? 我习惯于使用getWritableDatabase方法,它需要传递Context,但我觉得我不需要SQliteOpenHelper的onUpgrade或onCreate函数,因此可以不用传递Context。
1个回答

3

getWritableDatabaseSQLiteOpenHelper 打开数据库的方式。

如果您不需要 SQLiteOpenHelper,那么也不需要调用 getWritableDatabase


如果我选择使用SQLiteDatabase.openDatabase(),在Activity的生命周期内如何进行优化呢? 例如,在onPause期间释放资源。 使用db.close()是否安全(其中db是我的SQLiteDatabase对象)? 谢谢。 - Olumide Oyetoke
那是另一个问题。优化什么?速度?内存?可维护性? - CL.
我认为在onPause()期间始终关闭任何打开的数据库以释放内存是一个好习惯,而SQLiteOpenHelper close()方法非常适合此操作,并且在onResume()期间打开。 但是使用SQLiteDatabase.openDatabase(),我无法找到适当的方法在离开Activity时释放内存或断开数据库连接。 - Olumide Oyetoke
2
SQLiteDatabase是从SQLiteClosable派生而来的,它具有close方法。SQLiteClosable也有close方法。 - CL.
感谢 @CL,我选择了 openDatabase() 方法,它的效果符合预期。 - Olumide Oyetoke

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接