简体   繁体   English

将WorkManager从1.0.0-alpha02升级到1.0.0-alpha03时出现运行时异常

[英]Runtime exception when upgrading WorkManager from 1.0.0-alpha02 to 1.0.0-alpha03

When I upgrade WorkManager from 1.0.0-alpha02 to 1.0.0-alpha03. 当我将WorkManager从1.0.0-alpha02升级到1.0.0-alpha03时。

Old build.gradle 旧的build.gradle

def work_version = "1.0.0-alpha02"
implementation "android.arch.work:work-runtime:$work_version" // use -ktx for Kotlin
// optional - Firebase JobDispatcher support
implementation "android.arch.work:work-firebase:$work_version"

New build.gradle 新建build.gradle

def work_version = "1.0.0-alpha03"
implementation "android.arch.work:work-runtime:$work_version" // use -ktx for Kotlin
// optional - Firebase JobDispatcher support
implementation "android.arch.work:work-firebase:$work_version"

I notice I need to make the following changes 我注意到我需要进行以下更改

1.0.0-alpha02 1.0.0-alpha02

public WorkerResult doWork() {

1.0.0-alpha03 1.0.0-alpha03

public Result doWork() {

That's not an major issue though. 不过,这不是主要问题。 However, if we tend to upgrade an app, which is previously already running using 1.0.0-alpha02 , we will get the following runtime exception 但是,如果我们倾向于升级以前已经使用1.0.0-alpha02运行的应用程序,则会得到以下运行时异常

android.database.sqlite.SQLiteConstraintException: UNIQUE constraint failed: WorkTag.tag, WorkTag.work_spec_id (code 1555)
    at android.database.sqlite.SQLiteConnection.nativeExecuteForChangedRowCount(Native Method)
    at android.database.sqlite.SQLiteConnection.executeForChangedRowCount(SQLiteConnection.java:734)
    at android.database.sqlite.SQLiteSession.executeForChangedRowCount(SQLiteSession.java:754)
    at android.database.sqlite.SQLiteStatement.executeUpdateDelete(SQLiteStatement.java:64)
    at android.database.sqlite.SQLiteDatabase.executeSql(SQLiteDatabase.java:1679)
    at android.database.sqlite.SQLiteDatabase.execSQL(SQLiteDatabase.java:1608)
    at android.arch.persistence.db.framework.FrameworkSQLiteDatabase.execSQL(FrameworkSQLiteDatabase.java:242)
    at androidx.work.impl.WorkDatabaseMigrations$1.migrate(WorkDatabaseMigrations.java:73)
    at android.arch.persistence.room.RoomOpenHelper.onUpgrade(RoomOpenHelper.java:85)
    at android.arch.persistence.db.framework.FrameworkSQLiteOpenHelper$OpenHelper.onUpgrade(FrameworkSQLiteOpenHelper.java:133)
    at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:256)
    at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:163)
    at android.arch.persistence.db.framework.FrameworkSQLiteOpenHelper$OpenHelper.getWritableSupportDatabase(FrameworkSQLiteOpenHelper.java:96)
    at android.arch.persistence.db.framework.FrameworkSQLiteOpenHelper.getWritableDatabase(FrameworkSQLiteOpenHelper.java:54)
    at android.arch.persistence.room.RoomDatabase.compileStatement(RoomDatabase.java:244)
    at android.arch.persistence.room.SharedSQLiteStatement.createNewStatement(SharedSQLiteStatement.java:65)
    at android.arch.persistence.room.SharedSQLiteStatement.getStmt(SharedSQLiteStatement.java:72)
    at android.arch.persistence.room.SharedSQLiteStatement.acquire(SharedSQLiteStatement.java:87)
    at androidx.work.impl.model.WorkSpecDao_Impl.resetScheduledState(WorkSpecDao_Impl.java:337)
    at androidx.work.impl.WorkManagerImpl.rescheduleEligibleWork(WorkManagerImpl.java:514)
    at androidx.work.impl.utils.ForceStopRunnable.run(ForceStopRunnable.java:73)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
    at java.lang.Thread.run(Thread.java:761)

May I know what are some workarounds, to avoid such run-time exception? 请问有什么解决方法可以避免此类运行时异常?

We introduced implicit tags for Worker s in alpha03 . 我们在alpha03Worker引入了隐式标签。 In the rare case that you have a pre-existing tag, this will happen. 在极少数情况下,您有一个预先存在的标签,就会发生这种情况。 We will address this issue in alpha04 . 我们将在alpha04解决此问题。 Stay tuned. 敬请关注。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 OutlineTextField 、TextField 在 Jetpack Compose 1.0.0-alpha02 中不起作用 - OutlineTextField , TextField not working in Jetpack Compose 1.0.0-alpha02 Jetpack compose - 使用 1.0.0-alpha02 嵌套导航 - Jetpack compose - nested navigation with 1.0.0-alpha02 Dagger Hilt 'Assisted' 和 'ViewModelInject' 已弃用。 在匕首柄视图 Model 1.0.0-alpha03 - Dagger Hilt 'Assisted' and 'ViewModelInject' is deprecated. in Dagger Hilt View Model 1.0.0-alpha03 Dagger/Hilt 2.32-alpha Hilt Jetpack 1.0.0-alpha03 + Dynamic Feature + ViewModel + SavedStateHandle 和 dagger.assisted.AssistedInject - Dagger/Hilt 2.32-alpha Hilt Jetpack 1.0.0-alpha03 + Dynamic Feature + ViewModel + SavedStateHandle and dagger.assisted.AssistedInject 当应用程序从应用程序列表中关闭时,WorkManager 1.0.0-alpha11在API &lt;= 22上不起作用 - WorkManager 1.0.0-alpha11 not working on API <= 22 when app closes from app list 更新到WorkManager 1.0.0-alpha09后编译错误 - Compile errors after updating to WorkManager 1.0.0-alpha09 升级到带有 Kotlin 1.4.30 错误的 Jetpack Compose 1.0.0-alpha12 - Upgrading to Jetpack Compose 1.0.0-alpha12 with Kotlin 1.4.30 error 您正在使用的 compose 编译器插件(版本 1.0.0-alpha13)需要最低运行时版本 1.0.0-alpha13 - The compose compiler plugin you are using (version 1.0.0-alpha13) expects a minimum runtime version of 1.0.0-alpha13 java.lang.BootstrapMethodError:CameraX (1.0.0-alpha06) 上调用站点#2 引导方法的异常 - java.lang.BootstrapMethodError: Exception from call site #2 bootstrap method on CameraX (1.0.0-alpha06) 从0.14.0升级到1.0.0时出现Gradle问题 - Gradle issue when upgrading from 0.14.0 to 1.0.0
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM