1
我注意到,當我安排與JobScheduler一起運行的作業時,在第一次啓動作業之前總會出現至少10分鐘的延遲。有人知道爲什麼嗎?我今天開始深入瞭解代碼,但我沒有找到原因。我仍在尋找,但我想我會問。JobScheduler在第一次執行作業之前的延遲?
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.d("XXX", "Scheduling MyJobService to run.");
ComponentName serviceName = new ComponentName(this, MyJobService.class);
JobInfo job = new JobInfo.Builder(MyJobService.JOB_ID, serviceName)
.setBackoffCriteria(TimeUnit.SECONDS.toMillis(30), JobInfo.BACKOFF_POLICY_LINEAR)
.setPeriodic(TimeUnit.SECONDS.toMillis(5))
.build();
JobScheduler scheduler = (JobScheduler) getSystemService(Context.JOB_SCHEDULER_SERVICE);
scheduler.cancel(MyJobService.JOB_ID);
scheduler.schedule(job);
}
}
public class MyJobService extends JobService {
public final static int JOB_ID = 1000;
@Override
public boolean onStartJob(JobParameters params) {
Log.d("XXX", "Job started");
jobFinished(params, true);
return true;
}
@Override
public boolean onStopJob(JobParameters params) {
return true;
}
}
這裏是我重新啓動我的測試應用兩次的輸出。
06-14 16:53:00.335 29024-29024/com.example.jobschedulertest.jobschedulertest D/XXX: Scheduling MyJobService to run.
06-14 17:03:17.173 29024-29024/com.example.jobschedulertest.jobschedulertest D/XXX: Job started
06-14 17:12:05.158 31668-31668/com.example.jobschedulertest.jobschedulertest D/XXX: Scheduling MyJobService to run.
06-14 17:22:07.280 31668-31668/com.example.jobschedulertest.jobschedulertest D/XXX: Job started
我在Nexus 6
你得到這個一個完美的解決方案?即使我面臨同樣的問題 –
我相信這是由於打盹優化,所以沒有解決方案。 – TALE