对于 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
OneTimeWorkRequest oneTimeWorkRequest = new OneTimeWorkRequest.Builder(WidgetUpdateWorker.class).build();
WorkManager.getInstance(context).enqueueUniqueWork(WidgetUpdateWorker.WIDGET_UPDATE_WORK, ExistingWorkPolicy.REPLACE, oneTimeWorkRequest);