3

アプリに 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 と同じ問題。

誰かがすでにこの問題に直面していますか?

どうもありがとうございます。

4

1 に答える 1