アプリに JobScheduler を実装しようとしていますが、理解できない問題があります。
目標は、デバイスでインターネット接続が利用可能になったときに、10 秒以内にサービスを開始することです。
だから私はこのように JobScheduler を使用します:
JobScheduler mJobScheduler = (JobScheduler) getSystemService(Context.JOB_SCHEDULER_SERVICE);
JobInfo.Builder builder = new JobInfo.Builder(1, new ComponentName(getPackageName(),
MyJobService.class.getName()))
.setRequiredNetworkType(NETWORK_TYPE_ANY)
.setPeriodic(10 * 1000);
if (mJobScheduler.schedule(builder.build()) <= 0) {
Log.e("gch", "can't Schedule job for MyJobService");
} else {
Log.d("gch", "Schedule job for MyJobService");
}
そして私のJobService:
public class MyJobService extends android.app.job.JobService {
public MyJobService() {
}
@Override
public boolean onStartJob(JobParameters jobParameters) {
Log.d("gch", "onStartJob");
return false;
}
@Override
public boolean onStopJob(JobParameters jobParameters) {
Log.d("gch", "onStartonStopJob");
return true;
}
}
もちろん追加しましたandroid:permission="android.permission.BIND_JOB_SERVICE"
私が正しく理解していれば、JobService は、デバイスにネットワークがある場合にのみ実行され、多くても 10 秒以内に 1 回実行されます。
しかし、私のデバイスにはインターネット接続がありません (SIM カードが挿入されておらず、WIFI も使用できません)。しかし、ジョブは 10 秒ごとに実行されます。NETWORK_TYPE_ANY は無視されているようです。NETWORK_TYPE_UNMETRED と同じ問題。
誰かがすでにこの問題に直面していますか?
どうもありがとうございます。