Слишком много открытых файлов .. Не удалось открыть базу данных - PullRequest
0 голосов
/ 24 марта 2020

Как лучше всего закрыть курсор ..

У меня есть такой запрос

@SuppressLint("StaticFieldLeak")
    class query1 extends AsyncTask<Void, Void, Void>
    {
        @Override
        protected Void doInBackground(Void... voids) {
            db = new DatabaseHelper(getApplicationContext());
            sqLiteDatabase = db.getReadableDatabase();
            Cursor select_a_file = sqLiteDatabase.rawQuery("SELECT file FROM table1 WHERE id = '" + edittext1.getText().toString() + "'", null);
            while (ave_kwh_used.moveToNext())
            {
                firstdata = select_a_file.getString(0);
                select_a_file.close();
            }
            return null;
        }
    }

И у меня получилось около 40 из них, которые запускаются каждый раз, когда я нажимаю кнопку

У меня также есть запрос на вставку и вычисления, которые также выполняются внутри фонового потока.

После нажатия этой кнопки происходит выбор, вычисление и вставка ..

проблема в том, что когда я делаю это несколько раз, мое приложение вылетает, и оно говорит что-то вроде этого

W/zygote64: ashmem_create_region failed for 'indirect ref table': Too many open files
E/SQLiteLog: (14) cannot open file at line 35807 of [553a923c82]
    (14) os_unix.c:35807: (24) open(/data/user/0/com.vicjames.qiimeterreader/databases/Meter_Reader) - 
E/SQLiteDatabase: Failed to open database '/data/user/0/com.vicjames.qiimeterreader/databases/Meter_Reader'.
    android.database.sqlite.SQLiteCantOpenDatabaseException: unknown error (code 14): Could not open database
        at android.database.sqlite.SQLiteConnection.nativeOpen(Native Method)
...