Android SQLite关闭异常
我没有坚实的同步背景。我想当我使用synchronized方法时,这个问题会得到解决。但是有人能帮我解决这个问题吗?代码如下:Android SQLite关闭异常,android,android-sqlite,Android,Android Sqlite,我没有坚实的同步背景。我想当我使用synchronized方法时,这个问题会得到解决。但是有人能帮我解决这个问题吗?代码如下: public HashMap<String, FriendInfo> getAllRecordsInList_HashMap() { MySQLiteHelper dbHelper = MySQLiteHelper.getInstance(mActivity); HashMap<String, FriendInfo&g
public HashMap<String, FriendInfo> getAllRecordsInList_HashMap() {
MySQLiteHelper dbHelper = MySQLiteHelper.getInstance(mActivity);
HashMap<String, FriendInfo> list_map = new HashMap<String, FriendInfo>();
SQLiteDatabase db = dbHelper.getReadableDatabase();
// Cursor cursor = db.rawQuery("SELECT * from " +
// dbHelper.tbl_friendlist, new String[] {});
String[] cols = { dbHelper.id, dbHelper.name, dbHelper.picture, dbHelper.birthday, dbHelper.livein, dbHelper.gender, dbHelper.is_online, dbHelper.is_vip };
Cursor cursor = db.query(dbHelper.tbl_friendlist, cols, null, null, null, null, dbHelper.name);
if (cursor != null && cursor.getCount() > 0) {
// some code here....
}
cursor.close();
return list_map;
}
您不应该关闭数据库,因为它将在下次调用中再次使用。所以,试着移除
db.close();
从您的代码。根据(Android框架工程师)的说法,无需关闭内容提供商中的数据库
内容提供商在其托管进程创建时创建,
并且在进程运行的时间内保持不变,因此无需关闭数据库。当进程被终止时,它将作为内核清理进程资源的一部分被关闭
因此,无需关闭数据库。它将在不需要时自动关闭。如果我不是内容提供商的一部分,该怎么办?如果您不使用ContentProvider,那么最好使用单一模式SqlHandlerClass,它一次只能有一个实例。
db.close();