Exception java.lang.IllegalStateException:设备上的文件系统处于错误状态。 WorkManager 无法访问应用程序的内部数据存储

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

对于 Kotlin 有一个关于这次崩溃的类似问题。我想添加更多详细信息。

首先,此应用程序崩溃只是偶尔发生。它似乎只发生在 Android TV 设备上。以下来自索尼BRAVIA_VH2(BRAVIA VH2):

android.database.sqlite.SQLiteConnection.nativeOpen android.database.sqlite.SQLiteCantOpenDatabaseException Type: java.lang.IllegalStateException Exception java.lang.IllegalStateException: The file system on the device is in a bad state. WorkManager cannot access the app's internal data store. at androidx.work.impl.utils.ForceStopRunnable.run (ForceStopRunnable.java:153) at androidx.work.impl.utils.SerialExecutorImpl$Task.run (SerialExecutorImpl.java:96) at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1167) at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:641) at java.lang.Thread.run (Thread.java:919) Caused by android.database.sqlite.SQLiteCantOpenDatabaseException: unknown error (code 14 SQLITE_CANTOPEN): Could not open database at android.database.sqlite.SQLiteConnection.nativeOpen at android.database.sqlite.SQLiteConnection.open (SQLiteConnection.java:215) at android.database.sqlite.SQLiteConnection.open (SQLiteConnection.java:197) at android.database.sqlite.SQLiteConnectionPool.openConnectionLocked (SQLiteConnectionPool.java:505) at android.database.sqlite.SQLiteConnectionPool.open (SQLiteConnectionPool.java:206) at android.database.sqlite.SQLiteConnectionPool.open (SQLiteConnectionPool.java:198) at android.database.sqlite.SQLiteDatabase.openInner (SQLiteDatabase.java:915) at android.database.sqlite.SQLiteDatabase.open (SQLiteDatabase.java:895) at android.database.sqlite.SQLiteDatabase.openDatabase (SQLiteDatabase.java:759) at android.database.sqlite.SQLiteDatabase.openDatabase (SQLiteDatabase.java:748) at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked (SQLiteOpenHelper.java:374) at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase (SQLiteOpenHelper.java:317) at androidx.sqlite.db.framework.FrameworkSQLiteOpenHelper$OpenHelper.getWritableOrReadableDatabase (FrameworkSQLiteOpenHelper.kt:231) at androidx.sqlite.db.framework.FrameworkSQLiteOpenHelper$OpenHelper.innerGetDatabase (FrameworkSQLiteOpenHelper.kt:222) at androidx.sqlite.db.framework.FrameworkSQLiteOpenHelper$OpenHelper.getSupportDatabase (FrameworkSQLiteOpenHelper.kt:151) at androidx.sqlite.db.framework.FrameworkSQLiteOpenHelper.getWritableDatabase (FrameworkSQLiteOpenHelper.kt) at androidx.room.RoomDatabase.inTransaction (RoomDatabase.kt) at androidx.room.RoomDatabase.assertNotSuspendingTransaction (RoomDatabase.kt) at androidx.work.impl.model.SystemIdInfoDao_Impl.getWorkSpecIds (SystemIdInfoDao_Impl.java:163) at androidx.work.impl.background.systemjob.SystemJobScheduler.reconcileJobs (SystemJobScheduler.java:311) at androidx.work.impl.utils.ForceStopRunnable.cleanUp (ForceStopRunnable.java:278) at androidx.work.impl.utils.ForceStopRunnable.forceStopRunnable (ForceStopRunnable.java:242) at androidx.work.impl.utils.ForceStopRunnable.run (ForceStopRunnable.java:134)
依赖性:

implementation 'androidx.work:work-runtime:2.8.1'
这种崩溃只发生在少数设备上。谁能提供有关如何解决此问题的提示?

[更新] 2023-04-26

    这次崩溃似乎只发生在 BRAVIA VH2 设备上。
  • 一天可以发生10次以上。我怀疑用户会注意到它们。我 想知道为什么 Google Play 将其报告为崩溃。
  • 以下是在try-catch块中与androidx.work相关的唯一代码:
OneTimeWorkRequest oneTimeWorkRequest = new OneTimeWorkRequest.Builder(WidgetUpdateWorker.class).build(); WorkManager.getInstance(context).enqueueUniqueWork(WidgetUpdateWorker.WIDGET_UPDATE_WORK, ExistingWorkPolicy.REPLACE, oneTimeWorkRequest);
    
androidx android-workmanager
© www.soinside.com 2019 - 2024. All rights reserved.