我有这个带有 Room DB 和 API 的应用程序。 API 中的一些常用数据与每个用户的会话一起存储在 Room DB 中 但在这里,尽管清除了缓存、清除了设备上应用程序的数据、使 Android studio 上的缓存无效、清理了构建和重建,但我还是遇到了这个异常。
Exception java.lang.RuntimeException: Exception while computing database live data.
at androidx.room.RoomTrackingLiveData.refreshRunnable$lambda$0 (RoomTrackingLiveData.kt:74)
at androidx.room.RoomTrackingLiveData.$r8$lambda$PhMGW5zFk4QWazERd2lfEeLZqW0
at androidx.room.RoomTrackingLiveData$$ExternalSyntheticLambda0.run
at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:644)
at java.lang.Thread.run (Thread.java:1012)
Caused by java.lang.IllegalStateException:
at androidx.room.RoomOpenHelper.checkIdentity (RoomOpenHelper.kt:146)
at androidx.room.RoomOpenHelper.onOpen (RoomOpenHelper.kt:127)
at androidx.sqlite.db.framework.FrameworkSQLiteOpenHelper$OpenHelper.onOpen (FrameworkSQLiteOpenHelper.kt:287)
at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked (SQLiteOpenHelper.java:427)
at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase (SQLiteOpenHelper.java:316)
at androidx.sqlite.db.framework.FrameworkSQLiteOpenHelper$OpenHelper.getWritableOrReadableDatabase (FrameworkSQLiteOpenHelper.kt:232)
at androidx.sqlite.db.framework.FrameworkSQLiteOpenHelper$OpenHelper.innerGetDatabase (FrameworkSQLiteOpenHelper.kt:190)
at androidx.sqlite.db.framework.FrameworkSQLiteOpenHelper$OpenHelper.getSupportDatabase (FrameworkSQLiteOpenHelper.kt:151)
at androidx.sqlite.db.framework.FrameworkSQLiteOpenHelper.getWritableDatabase (FrameworkSQLiteOpenHelper.kt:104)
at androidx.room.RoomDatabase.inTransaction (RoomDatabase.kt:632)
at androidx.room.RoomDatabase.assertNotSuspendingTransaction (RoomDatabase.kt:451)
at androidx.room.RoomDatabase.query (RoomDatabase.kt:480)
at androidx.room.util.DBUtil.query (DBUtil.kt:75)
at com.vivayag.app.source.database.RoomDao_Impl$27.call (RoomDao_Impl.java:847)
at com.vivayag.app.source.database.RoomDao_Impl$27.call (RoomDao_Impl.java:843)
at androidx.room.RoomTrackingLiveData.refreshRunnable$lambda$0 (RoomTrackingLiveData.kt:72)
如果从设备上卸载应用程序,则应清除房间数据库数据,并且不应在下次安装应用程序时从上次登录的用户帐户开始。默认情况下,应用程序流程为 OnBoarding > 登录屏幕 > 主屏幕 但在此例外情况下,新安装的应用程序会使用上次(卸载应用程序之前)登录的相同帐户凭据直接进入主屏幕。一两秒后,主屏幕会因此异常而崩溃。
您是否将版本号升级为数据库邮政编码更改,我建议从它开始