gpt4 book ai didi

多次调用 Android JobScheduler onStartJob

转载 作者:可可西里 更新时间:2023-11-01 18:47:28 27 4
gpt4 key购买 nike

JobScheduler 多次调用 onStartJob(),尽管作业已完成。一切正常,如果我安排一项工作并等到它完成。但是,如果我同时安排两个或多个具有不同 ID 的作业,则在调用 jobFinished() 之后再次调用 onStartJob()

例如我调度job 1和job 2除了ID外参数完全一样,那么顺序是:

  1. onStartJob() 用于作业 1 和作业 2
  2. 两个作业都完成了,因此为它们调用了 jobFinished()
  3. 之后 onStartJob() 再次为具有相同 ID 的两个作业调用

我的工作非常基础,并不复杂。

public class MyJobService extends JobService {

@Override
public boolean onStartJob(final JobParameters params) {
new Thread(new Runnable() {
@Override
public void run() {
try {
// do something

} finally {
// do not reschedule
jobFinished(params, false);
}
}
}).start();

// yes, job running in the background
return true;
}

@Override
public boolean onStopJob(JobParameters params) {
// mark my background task as stopped

// do not reschedule
return false;
}
}

我这样安排作业

JobInfo jobInfo = createBaseBuilder(request)
.setMinimumLatency(2_000L)
.setOverrideDeadline(4_000L)
.setRequiresCharging(false)
.setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY)
.build();

int scheduleResult = mJobScheduler.schedule(jobInfo);
// is always success

不知道怎么回事

最佳答案

我估计是挂起的Job导致的,所以我在服务启动后调用mJobScheduler.cancelAll(),问题解决。

关于多次调用 Android JobScheduler onStartJob,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32079407/

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