我正在从java转向android开发。以前我在java工作过Hybernates。所以android sqlite数据库处理有点让我困惑。我正在使用单例数据库助手类,并创建了在我的助手类本身内打开和关闭daabase的方法,如下所示......
public class DatabaseManager extends SQLiteOpenHelper {
private static DatabaseManager instance;
public static DatabaseManager getInstance(Context context) {
if (instance == null)
instance = new DatabaseManager(context);
return instance;
}
public static DatabaseManager getInstance() {
return instance;
}
@Override
public void onCreate(SQLiteDatabase db) {
//CREATING TABLES...
}
public SQLiteDatabase getReadableDatabase(String logMsg) {
Log.d(TAG, "Readable database opening from :" + logMsg);
return super.getReadableDatabase();
}
public SQLiteDatabase getWritableDatabase(String logMsg) {
Log.d(TAG, "Writable database opening from :" + logMsg);
return super.getWritableDatabase();
}
public void closeDb(SQLiteDatabase db, String logMsg) {
db.close();
Log.d(TAG, "Closing db from :" + logMsg);
}
}
现在我的情况我正在开发一个消息传递应用程序。因为会有一些侦听器在运行,它们会在应用程序db的其中一个表中插入/检索数据。我计划在我的活动中使用内容提供程序从消息表中加载带有ResourceCursorAdapter
的listview。如果我在后台和活动期间打开和关闭数据库(onResume,onPause)会导致问题吗?如果这不是正确的方法,我应该如何处理这种情况?提前谢谢....
答案 0 :(得分:0)
最好不要让数据库保持打开状态太长时间。由于许多生命周期事件可能会或可能不会发生,因此最好只在需要时打开数据库,在数据库中执行所有操作并立即关闭。
因此,除非您计划使用它们来集中其他一些操作(就像您对日志记录所做的那样),否则您并不需要类中的最后3个方法。