Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/205.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android SQLite关闭异常_Android_Android Sqlite - Fatal编程技术网

Android SQLite关闭异常

Android SQLite关闭异常,android,android-sqlite,Android,Android Sqlite,我没有坚实的同步背景。我想当我使用synchronized方法时,这个问题会得到解决。但是有人能帮我解决这个问题吗?代码如下: public HashMap<String, FriendInfo> getAllRecordsInList_HashMap() { MySQLiteHelper dbHelper = MySQLiteHelper.getInstance(mActivity); HashMap<String, FriendInfo&g

我没有坚实的同步背景。我想当我使用synchronized方法时,这个问题会得到解决。但是有人能帮我解决这个问题吗?代码如下:

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();