workmanager-PendingEvent-标志不可变错误

6xfqseft  于 2021-09-29  发布在  Java
关注(0)|答案(1)|浏览(273)

例外:针对s+(版本31及以上)需要在创建PendingEvent时指定flag_immutable或flag_mutable中的一个
导致异常的代码:workmanager.getinstance(上下文).CreateConcelPendingEvent(id)
build.gradle选项:
编译DK31版
BuildTools版本“30.0.3”(版本31.0.0给出错误:安装的build tools版本31.0.0已损坏。使用sdk管理器删除并重新安装)。
仿真器:api 31(使用api s,一切正常)
依赖项:
//工作经理
实现“androidx.work:workruntime ktx:2.7.0-alpha05”
实现'com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava'
我认为问题可能出在buildcompat.java的这个方法中:

/**
 * Checks if the device is running on a pre-release version of Android S or a release version of
 * Android S or newer.
 * <p>
 * <strong>Note:</strong> When Android S is finalized for release, this method will be
 * deprecated and all calls should be replaced with {@code Build.VERSION.SDK_INT >=
 * Build.VERSION_CODES.S}.
 *
 * @return {@code true} if S APIs are available for use, {@code false} otherwise
 */
@ChecksSdkIntAtLeast(codename = "S")
public static boolean isAtLeastS() {
    return VERSION.CODENAME.equals("S");
}

这是因为当我在模拟器上运行应用程序并记录版本名时,我得到了:version name:rel

pgccezyw

pgccezyw1#

基于此缺陷,修复方法似乎是添加对的依赖 androidx.core:core:1.7.0-alpha01 其中包括对 BuildCompat.isAtLeastS() .
看起来您缺少的是对最新版本的 android.core . 这包括这一更改,它为 BuildCompat.isAtLeastS() .

相关问题