1

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 分近くかかる理由をデバッグできません。マシュマロの場合、ジョブがスケジュールされるとすぐに呼び出されます。この問題の根本原因を教えてください。

4

1 に答える 1