科特林 || Room DB:计算数据库实时数据时出现异常

问题描述 投票:0回答:1

我有这个带有 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 > 登录屏幕 > 主屏幕 但在此例外情况下,新安装的应用程序会使用上次(卸载应用程序之前)登录的相同帐户凭据直接进入主屏幕。一两秒后,主屏幕会因此异常而崩溃。

android kotlin android-studio android-room
1个回答
0
投票

您是否将版本号升级为数据库邮政编码更改,我建议从它开始

© www.soinside.com 2019 - 2024. All rights reserved.