如果用户没有漫游,我们的应用程序会使用 Job Service 进行后台工作。这是我们安排工作的方式:
JobInfo.Builder jobInfoBuilder = new JobInfo.Builder(JobServicesIds.CONNECTIVITY.getValue(), new ComponentName(context.getPackageName(), ConnectivityJobService.class.getName()));
jobInfoBuilder.setRequiredNetworkType(JobInfo.NETWORK_TYPE_NOT_ROAMING);
jobInfoBuilder.setPersisted(false);
JobScheduler jobScheduler = (JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE);
int result = jobScheduler.schedule(jobInfoBuilder.build());
为了测试这一点,我们使用模拟器,启用漫游,未连接 wifi,将数据状态设置为漫游并启动应用程序。为了触发工作,我们将数据状态更改为搜索然后漫游。在 Android Emulator API 24 中,作业将触发,一切都很好。在 Android Emulator API 26 中,作业不会触发 :(
有任何想法吗?:)