Determining and Monitoring the Connectivity StatusAndroid 电源管理专题之获取和监测网络连接状态
来源:互联网 发布:中国象棋开局软件 编辑:程序博客网 时间:2024/05/23 20:26
您可以通过 ConnectivityManager 来检查设备当前是否连接到了网络,如果已连接,具体是连接到哪种类型的网络。
检测网络连接状态
如果设备当前没有连接到任何网络,那么您的应用程序也就没有必要安排定时的数据更新任务。
示例代码展示了如何利用 ConnectivityManager 来查询当前活跃的可连接网络,以及设备目前是否已经联网。
ConnectivityManager cm =(ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);NetworkInfo activeNetwork = cm.getActiveNetworkInfo();boolean isConnected = activeNetwork.isConnectedOrConnecting();
检测网络的类型
目前 Android 设备支持的网络类型有移动网络,WiMAX,Wi-Fi和以太网。
通过查询当前激活的网络类型,可以获得网络带宽等信息,然后据此调整您应用程序的后台数据刷新频率。
示例代码
boolean isWiFi = activeNetwork.getType() == ConnectivityManager.TYPE_WIFI;
移动网络的费用要明显高于无线网络的费用,因此,在大多数情况下,如果当前设备连接的是移动网络,那么您应用程序的后台数据更新频率应尽可能保持比较低的状态,同样地,如果要下载一个较大的网络文件,在移动网络下应该暂停下载工作,等设备重新连接到了无线网络的环境再恢复下载工作。
虽然已经暂停了应用程序的后台更新操作,您的应用程序还是应该时刻监测当前设备网络的变化,一旦设备连接上了合适的网络环境(比如wi-fi),那么暂停的任务就可以重新开始执行了。
监测网络连接的变化
一旦设备连接的网络环境发生变化,系统的 ConnectivityManager 会广播一个类型为 CONNECTIVITY_ACTION ("android.net.conn.CONNECTIVITY_CHANGE") 的通知消息,您可以在应用程序的 manifest 文件中定义相应的广播接收器receiver,然后根据网络环境的变化来适当调整程序数据的更新频率。
示例代码
<action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>
网络环境的变化可能会非常频繁,只要设备的网络环境在无线网络和移动网络之间来回切换的时候,系统都会广播网络变化的通知,比较好的做法是,只有当您的更新程序此时处于暂停的状态,并且在网络连接上的时候需要恢复暂停工作的执行,那么应当注册和监听网络变化的广播,如果接收到广播通知,只需要检查网络是否已经连接上了,如果网络已经连接,那么应用程序就可以开始数据,否则的话,仍旧保持在暂停的状态,一直等到网络重新连接上了,再恢复任务的执行。
我们需要这样一种解决方法可以使您方便的注册和注销 manifest 中声明的广播接收器 Receivers, 在下一节课再继续讨论。
- Determining and Monitoring the Connectivity StatusAndroid 电源管理专题之获取和监测网络连接状态
- Determining and Monitoring the Docking State and TypeAndroid 电源管理专题之获取和监测Dock状态和类型
- 转: Android 电源管理专题之监测电池电量和充电状态Monitoring the Battery Level and Charging State
- android开发省电之--Determining and Monitoring the Connectivity Status(根据网络连接状况去省电)
- Determining and Monitoring the Connectivity Status 根据网络连接状况去省电
- Android 电源管理专题之获取和监测Dock状态和类型
- Determining and Monitoring the Docking State and Type 判断并监测设备的停驻状态与类型
- Monitoring the Battery Level and Charging State 监测电池电量和充电状态
- 监测当前网络连接状态
- IOS 监测网络连接状态
- ios网络连接状态监测
- iOS 监测网络连接状态
- IOS SCNetworkReachability和Reachability监测网络连接状态
- 监测和管理Xcache状态
- iOS开发-监测网络连接状态
- 判断并监测网络连接状态
- Ionic之监测网络连接
- 获取网络连接状态
- ControlTemplate in WPF —— Calendar
- 【?人际交往----分寸 你做到了吗?】
- ControlTemplate in WPF —— Shared in all file
- 超实用的8个Linux命令行性能监测工具
- 使用struts2进行国际化
- Determining and Monitoring the Connectivity StatusAndroid 电源管理专题之获取和监测网络连接状态
- Linux 核心之硬件基础
- 关于For循环中定义的变量在循环外的引用
- ASP.NET文本编辑器(FCKeditor)详细介绍
- URL的getFile()和getPath()方法的区别
- 基于cocos2d-x引擎的游戏框架设计
- ASP.NET配置文件有那些秘密? (转)
- [转]Delphi 几个读写注册表的函数
- Python tuple 元组详解