Google的官方文檔中描述是只有滿足執(zhí)行任務的條件后,任務才會被執(zhí)行。實際驗證,即使條件不滿足,任務也會被執(zhí)行,也就是如下代碼和上述代碼的實際執(zhí)行結果一樣。
public static void scheduleJob( Context context) { JobScheduler js = ( JobScheduler) context. getSystemService( Context. JOB_ SCHEDULER_ SERVICE); JobInfo job = new JobInfo. Builder( MY_ BACKGROUND_ JOB,
new ComponentName( context, JobSchedulerService. class)) // 設置 任務 的 執(zhí)行 間隔 時間 為 10 秒 . setPeriodic( 10* 1000) // 設置 設備 關機 重 啟 后, 還是 繼續(xù) 按 上述 要求 執(zhí)行 此 任務 . setPersisted( true) . build(); js. schedule( job); } //取消 Job private void cancelJob(){ mJobScheduler. cancelAll(); } //創(chuàng)建 Service 類 public class JobSchedulerService extends JobService { public static final int MY_ JOB_ MESSAGE = 0; private Handler mJobHandler = new Handler( new Handler. Callback() { @ Override public boolean handleMessage( Message msg ) { Toast. makeText( getApplicationContext(), "JobService
"JobService task running", Toast. LENGTH_ LONG). show(); jobFinished( (JobParameters) msg. obj, false); return true; } } ); @ Override public boolean onStartJob( JobParameters params ) { mJobHandler. sendMessage( Message. obtain( mJobHandler, MY_ JOB_ MESSAGE, params ) ); return false; } @ Override public boolean onStopJob( JobParameters params ) { Toast. makeText( getApplicationContext(), "JobService task stop", Toast. LENGTH_ SHORT ).show(); mJobHandler. removeMessages( MY_ JOB_ MESSAGE); return false; } }