如果用户没有漫游,我们的应用程序使用作业服务进行后台工作。我们是这样安排这项工作的:
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模拟器API 24中,作业将触发,一切都很棒。在Android模拟器API 26中,作业不会触发:(
有什么想法吗?)
发布于 2018-03-21 10:20:26
调用setRequiredNetworkType将网络定义为工作的严格要求。如果所请求的网络不可用,您的作业将永远无法运行。请参阅setOverrideDeadline(long)以更改此行为。调用此方法将覆盖setRequiredNetwork(NetworkRequest)先前定义的任何需求;您通常只想调用这些方法之一。
在onStartJob(JobParameters)中执行作业时,一定要使用getNetwork()返回的特定网络,否则将使用可能不满足此约束的默认网络。
有关更多详细信息,请访问上述答案的来源https://developer.android.com/reference/android/app/job/JobInfo.Builder.html#setRequiredNetwork(android.net.NetworkRequest)。
https://stackoverflow.com/questions/49403401
复制相似问题