恰好是不是由於碰撞或Android生產清潔成品循環作業是什麼? 在我看來,它不可能重新安排它。它永遠不會再被執行。火力地堡Jobdispatcher:指由於一個錯誤不休運行的作業都不會再安排
例
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()
。
有什麼建議嗎?
在崩潰,你可以調用jobFinished在catch的情況下/ finally塊。 你也可以嘗試getAllPendingJobs(),找到你的工作,並取消它之前安排一個新的。 –
不幸的是,'FirebaseJobDispatcher.getAllPendingJobs()'未實現。我不是指可以被捕獲的例外。如果Android關閉應用程序會發生什麼,例如, G。在缺乏記憶的情況下? – almisoft