首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JobService NETWORK_TYPE_NOT_ROAMING没有在Android8OreoAPI 26仿真程序中工作

JobService NETWORK_TYPE_NOT_ROAMING没有在Android8OreoAPI 26仿真程序中工作
EN

Stack Overflow用户
提问于 2018-03-21 10:07:43
回答 1查看 786关注 0票数 0

如果用户没有漫游,我们的应用程序使用作业服务进行后台工作。我们是这样安排这项工作的:

代码语言:javascript
复制
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中,作业不会触发:(

有什么想法吗?)

EN

回答 1

Stack Overflow用户

发布于 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)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49403401

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档