Android JobScheduler - setRequiredNetworkType 不工作

Android JobScheduler - setRequiredNetworkType not working

我试图用 1 个简单的约束条件制作 JobScheduler:setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY)

JobScheduler jobScheduler = (JobScheduler) mContext.getSystemService(Context.JOB_SCHEDULER_SERVICE);
ComponentName componentName = new ComponentName(mContext.getPackageName(), JobOneService.class.getName());
JobInfo jobInfo = new JobInfo.Builder(1, componentName)
        .setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY)
        .setPersisted(true)
        .build();
jobScheduler.schedule(jobInfo);

JobOneService 扩展了 JobService class。 我试着顺便模拟一下情况:关闭然后打开wifi网络。但是 onStartJob() 方法并不总是被调用(间歇调用)。

任何人都可以帮我解释一下为什么在我打开 wifi 连接后 onStartJob() 并不总是被调用?谢谢

在文档中,他们提到 setRequiredNetworkType 用于

Calling this method defines network as a strict requirement for your job. If the network requested is not available your job will never run.

所以它检查网络连接。如果网络已连接,那么您的工作将 运行 否则您的工作将不会 运行。如果你希望当网络再次连接时你的工作应该 运行 那么你必须为此编写你的逻辑。最好使用 WorkManager,因为 WorkManager 处理得当。