使用Android中的JobSchedulers检测网络状态更改

使用Android N,您无法静态注册CONNECTIVITY_CHANGE意图的广播接收器.

http://developer.android.com/preview/features/background-optimization.html#connectivity-action
Google文档建议使用Job Scheduler执行此任务.

是否可以使用Android中的Job Scheduler检测网络状态变化(LTE到wifi),反之亦然?

解决方法:

是的,不是.

JobInfo.Builder.setrequiredNetworktype()方法允许您安排在满足特定网络条件时运行的作业.

网络类型可以是以下三个值之一:

> JobInfo.NETWORK_TYPE_NONE:无需网络连接.
> JobInfo.NETWORK_TYPE_UNMETERED:未计量的WiFi或以太网连接.
> JobInfo.NETWORK_TYPE_ANY:任何网络连接(WiFi或蜂窝网络).

现在,抓住……没有NETWORK_TYPE_CELLUAR.只有在蜂窝电话上才能唤醒您的应用程序. (你为什么想这么做?)

一个问题…… WiFi连接可以计量或不计量.计量连接通常是移动热点之类的东西,可以自动检测(热点可以发送特殊的DHCP选项),或者用户可以通过WiFi设置在每个网络上手动切换它.

所以,是的,您可以在JobScheduler作业上设置网络类型约束.但是,不,您没有达到您要求的粒度级别.

正如@CommonsWare所提到的,我们的想法是,除非您有充分的理由,否则您通常希望在网络连接未计量时安排与网络相关的作业. (使用setRequiresCharging(true)来延迟工作直到交流电源可用,以节省电池也是一个好主意.)

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...