WorkManager方法getWorkInfoByIdLiveData没有提供WorkInfo

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

我正在尝试使用WorkManager实例中存在的getWorkInfoByLiveData方法获取我的WorkerInfo。

val workInfo = workManager.getWorkInfoByIdLiveData(uuid).value

WorkInfo始终为null。另外,我从主线程调用此方法。

我正在检查此方法的情况。当用户发送网络请求时,我尝试让工作人员入队;如果没有连接互联网,我只需向WorkManager注册工作即可。一段时间后,如果我尝试使用UUID获取WorkerInfo,它将始终为我提供null。

注意:调用getWorkInfoByLiveData时,此时未执行Worker。

我不希望WorkManager给我带ENQUEUED状态的WorkInfo。

android android-jetpack android-workmanager workmanagers
1个回答
0
投票

注意:在添加活动观察者之前,Livedata不会计算该值。

[getWorkInfoByIdLiveData()返回您需要观察以获取workInfo值的LiveData<WorkInfo>

val status = workManager.getWorkInfoByIdLiveData(uuid)
                        .observe(this, Observer{ workInfo ->

    if (workInfo!=null){
        // ...
    }
}

您可以查看WorkManager's codelab以了解其用法。

© www.soinside.com 2019 - 2024. All rights reserved.