gpt4 book ai didi

android - 从 V1 迁移时,WorkManager 2.0.1 到 2.1.0 api 更改 "setInitialDelay"

转载 作者:行者123 更新时间:2023-12-05 00:05:24 26 4
gpt4 key购买 nike

我有一个 android 库,它使用 Work manager 来处理任务调度。为了向后兼容,我使用支持库制作了库。

由于 setInitialDelay 在 WorkManager v2.1.0 中被移动到父类,如果库使用它(同时使用 WorkManager v1 和支持库),Jetifier 将使 WorkManger v1 就像 WorkManager v2.0.1 而不是 v2.0.2。所以这会导致错误:

Caused by: java.lang.NoSuchMethodError:
No virtual method setInitialDelay(JLjava/util/concurrent/TimeUnit;)Landroidx/work/OneTimeWorkRequest$Builder;
in class Landroidx/work/OneTimeWorkRequest$Builder;

旧的 workManager (2.0.1) 代码是这样的:

abstract class WorkRequest {
abstract static class Builder<B extends Builder, W extends WorkRequest> {
}
}

class OneTimeWorkRequest extends WorkRequest {
static class Builder extends WorkRequest.Builder<Builder, OneTimeWorkRequest> {
public @NonNull Builder setInitialDelay(long duration, @NonNull TimeUnit timeUnit) {
....
}
}
}

新的 (^2.1.0) 是:

abstract class WorkRequest {
abstract static class Builder<B extends Builder, W extends WorkRequest> {
public @NonNull B setInitialDelay(long duration, @NonNull TimeUnit timeUnit) {
...
}
}
}

class OneTimeWorkRequest extends WorkRequest {
static class Builder extends WorkRequest.Builder<Builder, OneTimeWorkRequest> {
}
}

长话短说

如果开发人员使用 workManager v2.1.0具有 WorkManager v1 并使用 Jetifer 转换为 v2 的库会怎样?

最佳答案

不幸的是,API 更改是一个中断,要解决此问题,您必须将项目迁移到 AndroidX

androidx.workmanager 的进一步更改将不考虑与 android.arch Artifact 的兼容性。

关于android - 从 V1 迁移时,WorkManager 2.0.1 到 2.1.0 api 更改 "setInitialDelay",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59799097/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com