Android 优化电池使用时间——确定和检测网络状态
原文参见 此处
确定和监控网络连接状态
重复提醒和后台服务最常见的用途之一,就是为来自互联网资源的应用数据、缓存数据安排定期更新或执行长时间运行的下载任务。但是,如果您没有连接互联网,或因连接过慢而无法完成下载,那就根本没必要唤醒设备并安排更新了。
您可以使用 ConnectivityManager 查看是否确实已连接互联网,如果已连接,您还可以了解当前的连接类型。
确定是否已连接互联网
如果设备未连接互联网,就没有必要根据互联网资源安排更新了。以下代码段说明如何使用 ConnectivityManager 查询有效网络并确定该网络是否已连接互联网。
ConnectivityManager cm =(ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
boolean isConnected = activeNetwork.isConnectedOrConnecting();
确定互联网连接的类型
您也可以确定当前可用的互联网连接的类型。
通过移动数据、WiMAX、Wi-Fi 和以太网连接可提供设备连接。您可以查询有效网络的类型(具体如下所示),以便根据可用带宽调整刷新频率。
boolean isWiFi = activeNetwork.getType() == ConnectivityManager.TYPE_WIFI;
移动数据的费用往往比 Wi-Fi 高很多,因此在大多数情况下,如果您使用的是移动连接,就应降低应用更新频率。同样,在没有 Wi-Fi 连接的情况下,您就应暂停较大的下载任务。
停用更新后,请务必侦听连接情况的变化,以便在建立互联网连接后恢复更新。
监控连接情况的变化
只要连接的具体情况发生变化,ConnectivityManager 就会广播 CONNECTIVITY_ACTION (“android.net.conn.CONNECTIVITY_CHANGE”) 操作。您可以在清单中注册广播接收器,以便侦听这些变化并相应地恢复(或暂停)后台更新。
<action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>
设备连接情况的变化可能会非常频繁,只要您在移动数据和 Wi-Fi 之间相互切换,系统就会触发此广播。因此比较合适的做法是,仅当之前暂停了更新或下载时才监控此广播,以便恢复更新或下载。通常,您只需在开始更新前检查互联网连接情况即可,如果未连接互联网,请暂停后续更新,直到连接恢复。
此技巧需要切换您在清单中声明的广播接收器,具体说明请见下一教程。
Android 优化电池使用时间——确定和检测网络状态相关推荐
- Android 优化电池使用时间 ——监控电池电量和充电状态
时常看Android官网开发文档,最近突然发现Android官网提供了一些中文翻译文档,真心感觉不错.考虑很大一部分童鞋都生活在大中华局域网里,不能畅游世界,特转载相关系列文档,以供大家一起学习,原文 ...
- Android 优化电池使用时间——确定和监控基座对接状态和类型
原文参见此处 确定和监控基座对接状态和类型 Android 设备支持几种不同类型的基座.这些类型包括车载或家用基座以及数字和模拟基座.许多基座可用于为插入的设备充电,因此基座状态通常与充电状态紧密相关 ...
- Android 优化电池使用时间——根据需要操作广播接收器
原文参见此处 根据需要操作广播接收器 监控设备状态变化的最简单方法就是,为您监控的每种状态创建 BroadcastReceiver 并在应用清单中逐一进行注册.然后,您只需根据当前设备状态在每个接收器 ...
- Android移动开发检测网络状态并使用BroadcastReceiver(广播接收者)进行接收网络变化的后续处理
在Android开发中,许多功能需要网络连接,所以在开发过程中需要进行手机网络的检测.而每做一个App,就要进行检测,那么我直接将检测网络状态的功能封装成一个类. 检测网络状态所需要的Api: Con ...
- Linux下检测网络状态是否正常
// Linux下检测网络状态是否正常 #include <sys/types.h> #include <string.h> #include <stdlib.h> ...
- iOS开发网络篇—Reachability检测网络状态
前言:当应用程序需要访问网络的时候,它首先应该检查设备的网络状态,确认设备的网络环境及连接情况,并针对这些情况提醒用户做出相应的处理.最好能监听设备的网络状态的改变,当设备网络状态连接.断开时,程序也 ...
- ubuntu 检测网络状态命令
一.检测网络状态常用的基本命令 1)ifconfig命令被用于配置和显示Linux内核中网络接口的网络参数 ifconfig 输出结果如下: drew@ubun:~$ ifconfig eth0 Li ...
- AFNetworkReachabilityManager检测网络状态
// 如果要检测网络状态的变化,必须用检测管理器的单例的startMonitoring[[AFNetworkReachabilityManager sharedManager] startMonito ...
- flutter检测网络状态
flutter检测网络状态 原来使用的插件connectivity已经停止使用,现在使用的是新版的connectivity_plus 插件地址:https://pub.dev/packages/con ...
最新文章
- graphql_普通英语GraphQL指南
- 通俗讲解集成学习算法!
- iPad随想:苹果的妙招、谷歌的尴尬和中移动MM的局限
- iOS项目中的网络请求和上下拉刷新封装
- SAP License:MTO和MTS的区别
- 频率主义(Frequentism)与贝叶斯主义(Bayesianism)的哲学辨异与实践(Python仿真)
- python ide_Python id()
- c语言 删除程序注释,C/C++ 源文件删除注释代码
- python抓取网站内容_python抓取网站内容详细
- 视频去水印工具-视频去水印哪个软件好用免费
- 【财经期刊FM-Radio|2021年01月27日】
- 合伙企业对外债务如何承担
- 解决每次弹出“是否允许XX录制/投射您的屏幕”(享做笔记、王者荣耀等)手把手教程
- AE2022 for Mac安装包+安装教程
- 2020年中国滚刀行业产销及市场规模分析[图]
- Charles工具使用-pc端
- 硬编码失败问题Codec reported err 0x80000000, actionCode 0, while in state 5
- c语言 实习报告,计算机专业c语言实训报告范文
- Python学习-Scipy库稀疏矩阵的建立(面向列的稀疏矩阵、基于坐标格式的稀疏矩阵)
- win7下运行Excel2007,出现“向程序发送命令时出现问题”的解决
热门文章
- android apr分析,APR分析信号篇
- Matlab中画图以及plot函数及legend函数详解
- SIGIR 2021 | 推荐系统中的多行为建模
- 算法全覆盖,还能玩星际争霸,开源决策智能平台OpenDILab面世
- 百度发布全新桌面版机器学习开发环境,12月赠送免费GPU算力
- 弗吉尼亚理工大学(Virginia Tech)NCR校区招收计算机硕士学位研究生
- 浙江大学人工智能研究所:AI+X驱动科学发现
- googlehelper手机版ios_二次元漫画控iOS苹果手机版下载v1.0.0下载|免费二次元漫画控iOS苹果手机版下载绿色版...
- JVM【带着问题去学习 02】数据结构栈+本地方法栈+虚拟机栈+JVM栈运行原理
- 【SQL编程】Greenplum 数据库通过 timestamp 类型字段值实现数据的(日期时段筛选+时间时段筛选)跨天时段及不跨天时段SQL详情