原文参见 此处

确定和监控网络连接状态

重复提醒和后台服务最常见的用途之一,就是为来自互联网资源的应用数据、缓存数据安排定期更新或执行长时间运行的下载任务。但是,如果您没有连接互联网,或因连接过慢而无法完成下载,那就根本没必要唤醒设备并安排更新了。

您可以使用 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 优化电池使用时间——确定和检测网络状态相关推荐

  1. Android 优化电池使用时间 ——监控电池电量和充电状态

    时常看Android官网开发文档,最近突然发现Android官网提供了一些中文翻译文档,真心感觉不错.考虑很大一部分童鞋都生活在大中华局域网里,不能畅游世界,特转载相关系列文档,以供大家一起学习,原文 ...

  2. Android 优化电池使用时间——确定和监控基座对接状态和类型

    原文参见此处 确定和监控基座对接状态和类型 Android 设备支持几种不同类型的基座.这些类型包括车载或家用基座以及数字和模拟基座.许多基座可用于为插入的设备充电,因此基座状态通常与充电状态紧密相关 ...

  3. Android 优化电池使用时间——根据需要操作广播接收器

    原文参见此处 根据需要操作广播接收器 监控设备状态变化的最简单方法就是,为您监控的每种状态创建 BroadcastReceiver 并在应用清单中逐一进行注册.然后,您只需根据当前设备状态在每个接收器 ...

  4. Android移动开发检测网络状态并使用BroadcastReceiver(广播接收者)进行接收网络变化的后续处理

    在Android开发中,许多功能需要网络连接,所以在开发过程中需要进行手机网络的检测.而每做一个App,就要进行检测,那么我直接将检测网络状态的功能封装成一个类. 检测网络状态所需要的Api: Con ...

  5. Linux下检测网络状态是否正常

    // Linux下检测网络状态是否正常 #include <sys/types.h> #include <string.h> #include <stdlib.h> ...

  6. iOS开发网络篇—Reachability检测网络状态

    前言:当应用程序需要访问网络的时候,它首先应该检查设备的网络状态,确认设备的网络环境及连接情况,并针对这些情况提醒用户做出相应的处理.最好能监听设备的网络状态的改变,当设备网络状态连接.断开时,程序也 ...

  7. ubuntu 检测网络状态命令

    一.检测网络状态常用的基本命令 1)ifconfig命令被用于配置和显示Linux内核中网络接口的网络参数 ifconfig 输出结果如下: drew@ubun:~$ ifconfig eth0 Li ...

  8. AFNetworkReachabilityManager检测网络状态

    // 如果要检测网络状态的变化,必须用检测管理器的单例的startMonitoring[[AFNetworkReachabilityManager sharedManager] startMonito ...

  9. flutter检测网络状态

    flutter检测网络状态 原来使用的插件connectivity已经停止使用,现在使用的是新版的connectivity_plus 插件地址:https://pub.dev/packages/con ...

最新文章

  1. graphql_普通英语GraphQL指南
  2. 通俗讲解集成学习算法!
  3. iPad随想:苹果的妙招、谷歌的尴尬和中移动MM的局限
  4. iOS项目中的网络请求和上下拉刷新封装
  5. SAP License:MTO和MTS的区别
  6. 频率主义(Frequentism)与贝叶斯主义(Bayesianism)的哲学辨异与实践(Python仿真)
  7. python ide_Python id()
  8. c语言 删除程序注释,C/C++ 源文件删除注释代码
  9. python抓取网站内容_python抓取网站内容详细
  10. 视频去水印工具-视频去水印哪个软件好用免费
  11. 【财经期刊FM-Radio|2021年01月27日】
  12. 合伙企业对外债务如何承担
  13. 解决每次弹出“是否允许XX录制/投射您的屏幕”(享做笔记、王者荣耀等)手把手教程
  14. AE2022 for Mac安装包+安装教程
  15. 2020年中国滚刀行业产销及市场规模分析[图]
  16. Charles工具使用-pc端
  17. 硬编码失败问题Codec reported err 0x80000000, actionCode 0, while in state 5
  18. c语言 实习报告,计算机专业c语言实训报告范文
  19. Python学习-Scipy库稀疏矩阵的建立(面向列的稀疏矩阵、基于坐标格式的稀疏矩阵)
  20. win7下运行Excel2007,出现“向程序发送命令时出现问题”的解决

热门文章

  1. android apr分析,APR分析信号篇
  2. Matlab中画图以及plot函数及legend函数详解
  3. SIGIR 2021 | 推荐系统中的多行为建模
  4. 算法全覆盖,还能玩星际争霸,开源决策智能平台OpenDILab面世
  5. 百度发布全新桌面版机器学习开发环境,12月赠送免费GPU算力
  6. 弗吉尼亚理工大学(Virginia Tech)NCR校区招收计算机硕士学位研究生
  7. 浙江大学人工智能研究所:AI+X驱动科学发现
  8. googlehelper手机版ios_二次元漫画控iOS苹果手机版下载v1.0.0下载|免费二次元漫画控iOS苹果手机版下载绿色版...
  9. JVM【带着问题去学习 02】数据结构栈+本地方法栈+虚拟机栈+JVM栈运行原理
  10. 【SQL编程】Greenplum 数据库通过 timestamp 类型字段值实现数据的(日期时段筛选+时间时段筛选)跨天时段及不跨天时段SQL详情