Job Scheduler API を使用しています。マシュマロの場合、完全に機能します。ただし、Lollipop デバイス (5.1.1) の場合、すぐには起動しません (ランダムな分数かかります)。私が言いたいのは、 onStartJob() メソッドの呼び出しには時間がかかるということです。
以下は、ジョブをスケジュールしているコード スニペットです。
private void scheduleJob() {
ComponentName serviceName = new ComponentName(this, SampleJobService.class);
JobInfo jobInfo = new JobInfo.Builder(1000, serviceName)
.setRequiredNetworkType(JobInfo.NETWORK_TYPE_NONE)
.setRequiresCharging(false)
.setPeriodic(60 * 1000)
.build();
JobScheduler scheduler = (JobScheduler) this.getSystemService(Context.JOB_SCHEDULER_SERVICE);
int result = scheduler.schedule(jobInfo);
if (result == JobScheduler.RESULT_SUCCESS) {
Log.e("khushank", "Job scheduled successfully!");
Toast.makeText(this, "Job scheduled successfully!", Toast.LENGTH_LONG).show();
} else {
Log.e("khushank", "not able to start result: " + result);
}
}
以下は、ログを書き込むだけのシンプルなジョブサービスです
public class SampleJobService extends JobService {
@Override
public boolean onStartJob(JobParameters params) {
Log.e("khushank","job started with id = "+params.getJobId());
return false;
}
@Override
public boolean onStopJob(JobParameters params) {
Log.e("khushank","job Stopped with id = "+params.getJobId());
return false;
}
}
このサンプル アプリケーションを実行すると、ログは次のように出力されます。
12-16 16:28:17.040 27119-27119/com.example.inkkashy02.myapplication E/khushank: Job scheduled successfully!
12-16 16:29:17.032 27119-27119/com.example.inkkashy02.myapplication E/khushank: job started with id = 1000
Lollipop で onStartJob() を呼び出すのに 1 分近くかかる理由をデバッグできません。マシュマロの場合、ジョブがスケジュールされるとすぐに呼び出されます。この問題の根本原因を教えてください。