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;
}
}
私のテストアプリケーションを2回再起動したときの出力です。
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
私はこれは、彼らが私はだろうと確信してコードを離すとAndroidのN.で追加された何かであると考えていネクサス6
ピュアあなたは、このための完璧なソリューションを取得しましたか? –
私はそれがドーズの最適化に起因すると信じているので、解決策はありません。 – TALE