如何修复“指定workmanager要使用的作业id的有效范围”

kyxcudwk  于 2021-06-29  发布在  Java
关注(0)|答案(2)|浏览(693)

赏金三天后到期。回答此问题可获得+50声望奖励。姓想引起更多的注意**这个问题。

我已经延长了 JobService 像这样的:

public class MyJobService extends JobService {

    @Override
    public boolean onStartJob(JobParameters params) {
        return false;
    }

    @Override
    public boolean onStopJob(JobParameters params) {
        return false;
    }
}

整个类代码以黄色突出显示。
警告说:
指定workmanager要使用的作业id的有效范围。
我做错了什么?我该怎么办?

qeeaahzv

qeeaahzv1#

警告提示,只要 JobService 类,则用户应指定 WorkManager 有资格使用“为了不与应用程序其余部分中使用的职务代码冲突”(请参阅 setJobSchedulerJobIdRange(int, int) ).
这应该在创建 androidx.work.Configuration 示例:

Configuration.Builder builder = new Configuration.Builder();
builder.setJobSchedulerJobIdRange(0, 1000);
...

不幸的是,我不能使我的设置工作的东西,我必须寻找皮棉的来源( SpecifyJobSchedulerIdRangeIssueDetector ). 从逻辑上我可以理解,只要有方法调用 setJobSchedulerJobIdRange (请参阅第92行)-然后检测器将假设作业范围id已由用户指定,但这不起作用(至少在我的机器上是这样)。
不幸的是,检查探测器的测试类也没有传达任何信息。
现在我可以说:
创建扩展的kotlin类 JobService 不会导致皮棉警告
创建扩展 JobService 结果是一个lint警告,但即使在 setJobSchedulerJobIdRange() 是在别的班级里表演的 JobService 有趣的是 setJobSchedulerJobIdRange()JobService 类修复了警告:

显然,这个检测器实现(或在我的机器上)存在一些问题。
不过,如果您指定了workmanager可以自由使用的ID范围(即,您调用了 setJobSchedulerJobIdRange() )-那你可以抑制这个警告。

f5emj3cl

f5emj3cl2#

请尝试以下源代码。我在你的代码里找不到任何错误。试着回来 true 而不是 false .

public class MyJobService extends JobService {

@Override
public boolean onStartJob(JobParameters params) {
    return true;
}

@Override
public boolean onStopJob(JobParameters params) {
    return true;
}

}

欲了解更多信息,请访问链接

相关问题