由于崩溃或 Android 进程清理而未完成的重复作业会发生什么情况?在我看来,不可能重新安排它。它永远不会再被执行。
例子
public class MyJobService extends JobService {
@Override
public boolean onStartJob(JobParameters job) {
doSomeWork(job);
return true; // true = there is still work going on!
}
private void doSomeWork(final JobParameters job) {
new Thread() {
public void run() {
// do some work, maybe load data from internet
// loading...
// loading...
// app crashes or its process is killed by Android
// this piece of code is never reached!
jobFinished(job, false);
}
}.start();
}
}
正如您在代码中看到的,作业永远不会因崩溃而终止。之后不会重新安排。
如果你想用 重新安排它FirebaseJobDispatcher.mustSchedule()
,它会出现在 logcat 中:
E/FJD。ExternalReceiver:收到已运行作业的执行请求
W/FJD。JobService: 标签 = ... 的作业已经在运行
即使你FirebaseJobDispatcher.cancel()
之前跑过。
有什么建议么?