我正在搜索有关Android上SQLite的信息,并阅读一些Android编程书籍的章节,但我不知道如何正确地在Android上使用SQLite。我正在开发一个具有活动、服务和广播接收器的应用程序,所有这些组件都必须读取和写入数据库。因此,我有一些问题:
1.创建SQLiteOpenHelper实例的最佳位置在哪里?我已经阅读了相关信息,似乎最好的方法是为整个应用程序只创建一个SQLiteOpenHelper。
2.什么时候,在哪里需要通过调用dbHelper.getReadableDatabase()(或getWritableDatabase)获取SQLiteDatabase对象?每次查询都需要在每次查询后关闭它吗?
3.我读到说我不应该在主线程中执行数据库操作,所以我正在为我在Activity中进行的每个数据库操作创建异步任务,这是最好的方法吗?
1.创建SQLiteOpenHelper实例的最佳位置在哪里?我已经阅读了相关信息,似乎最好的方法是为整个应用程序只创建一个SQLiteOpenHelper。
2.什么时候,在哪里需要通过调用dbHelper.getReadableDatabase()(或getWritableDatabase)获取SQLiteDatabase对象?每次查询都需要在每次查询后关闭它吗?
3.我读到说我不应该在主线程中执行数据库操作,所以我正在为我在Activity中进行的每个数据库操作创建异步任务,这是最好的方法吗?
SQLiteOpenHelper
实例的最佳位置是在ContentProvider
的onCreate
方法中...使用getWritableDatabase()
的最佳位置是在ContentProvider
的delete
/insert
/update
方法中,而getReadableDatabase()
的最佳位置则在query
方法中...你不需要关闭这些数据库...为了避免在UI上使用数据库操作,可以使用带CP的Loaders
...我知道编写CP很痛苦,但是如果编写得好,可以避免许多问题(例如从多个线程访问数据库)。 - Selvin