Попытка повторно открыть уже закрытый объект sqlite

Я использую Android Room 1.0.0 для БД. При запуске приложения я получаю следующую ошибку.

  java.lang.IllegalStateException: attempt to re-open an already-closed object: SQLiteDatabase: /data/user/0/com.abc.mypkg/databases/myapp
                                                                   at android.database.sqlite.SQLiteClosable.acquireReference(SQLiteClosable.java:55)
                                                                   at android.database.sqlite.SQLiteDatabase.executeSql(SQLiteDatabase.java:2086)
                                                                   at android.database.sqlite.SQLiteDatabase.execSQL(SQLiteDatabase.java:2032)
                                                                   at android.arch.persistence.db.framework.FrameworkSQLiteDatabase.execSQL(FrameworkSQLiteDatabase.java:240)
                                                                   at android.arch.persistence.room.RoomOpenHelper.createMasterTableIfNotExists(RoomOpenHelper.java:131)
                                                                   at android.arch.persistence.room.RoomOpenHelper.checkIdentity(RoomOpenHelper.java:107)
                                                                   at android.arch.persistence.room.RoomOpenHelper.onOpen(RoomOpenHelper.java:100)
                                                                   at android.arch.persistence.db.framework.FrameworkSQLiteOpenHelper$OpenHelper.onOpen(FrameworkSQLiteOpenHelper.java:133)
                                                                   at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:310)
                                                                   at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:194)
                                                                   at android.arch.persistence.db.framework.FrameworkSQLiteOpenHelper$OpenHelper.getWritableSupportDatabase(FrameworkSQLiteOpenHelper.java:93)
                                                                   at android.arch.persistence.db.framework.FrameworkSQLiteOpenHelper.getWritableDatabase(FrameworkSQLiteOpenHelper.java:54)
                                                                   at android.arch.persistence.room.RoomDatabase.query(RoomDatabase.java:193)
                                                                   at com.jpmc.appstore.db.AppItemDao_Impl$11.compute(AppItemDao_Impl.java:415)
                                                                   at com.jpmc.appstore.db.AppItemDao_Impl$11.compute(AppItemDao_Impl.java:401)
                                                                   at android.arch.lifecycle.ComputableLiveData$2.run(ComputableLiveData.java:87)
                                                                   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
                                                                   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
                                                                   at java.lang.Thread.run(Thread.java:764)

Это не всегда, он приходит один или два раза из 10, но когда он приходит, мне нужно удалить приложение и установить. Это даже происходит при новой установке приложения. Я также использовал fallbackToDestructiveMigration (), но без помощи.

Хотите понять первопричину этого. На производстве это может быть опасно для меня.

Вы где-нибудь вручную закрываете RoomDatabase?

CommonsWare 29.05.2018 15:01

Нет, я нигде не закрываю RoomDB вручную.

Sharad 30.05.2018 07:29
0
2
630
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я использовал версию комнаты 1.1.1-rc1, и теперь все работает нормально.

Другие вопросы по теме