转载自: http://blog.csdn.net/kesenhoo/article/details/7396321

Modifying your Download Patterns Based on the Connectivity Type

[根据连接的网络类型来更改下载模式]

  • 并不是所有的网络类型(Wi-Fi,3G,2G,etc)对电量的消耗是同等的。不仅仅Wi-Fi电波比无线电波消耗的电量要少很多,而且不同的无线电波(3G,2G,LTE……)也存在使用不同电量的区别。

Use Wi-Fi [使用Wi-Fi]

  • 在大多数情况下,Wi-Fi电波会在使用相对较低的电量的情况下提供一个相对较宽的带宽。因此,我们需要努力争取尽量使用Wi-Fi来传递数据。
  • 我们可以使用Broadcast Receiver来监听当网络连接切换为Wi-Fi,这个时候我们可以进行大量的数据传递操作,例如下载,执行定时的更新操作,甚至是在这个时候加大更新的频率。这些内容都可以在前面的课程中找到。

Use Greater Bandwidth to Download More Data Less Often [使用更大的带宽来下载更多的数据,而不是经常去下载]

  • 当通过无线电进行连接的时候,更高的带宽通常伴随着更多的电量消耗。这意味这LTE(一种4G网络制式)会比3G制式消耗更多,当然比起2G,那就更是如此。
  • 从Lesson 1我们知道了无线电状态机是怎么回事,通常来说相对更宽的带宽网络制式会有更长的状态切换时间(也就是从full power过渡到standby有一段时间的延迟)。
  • 同时,更宽的带宽意味这可以更贪婪的进行prefetch,下载更多的数据。也许这个说法不是很直观,因为过渡时间比较长,而过渡时间的长短我们无法控制,也就是过渡时间的电量消耗差不多是固定了,既然这样,我们在每次传输会话中为了减少更新的频率而把无线电激活的时间拉长,这样显的更有效率。
  • 例如:如果LTE无线电的带宽与电量消耗都是3G无线电的2倍,我们应该在每次会话的时候都下载4倍于3G的数据量,或者是差不多10Mb(前面文章有说明3G一般每次下载2Mb)。当然,下载到这么多数据的时候,我们需要好好考虑prefetch本地存储的效率并且需要经常刷新预取的cache。
  • 我们可以使用connectivity manager来判断当前激活的无线电波,并且根据不同结果来修改prefetch操作。
  1. ConnectivityManager cm =  (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);  TelephonyManager tm =  (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);  NetworkInfo activeNetwork = cm.getActiveNetworkInfo();  int PrefetchCacheSize = DEFAULT_PREFETCH_CACHE;  switch (activeNetwork.getType()) {  case (ConnectivityManager.TYPE_WIFI):   PrefetchCacheSize = MAX_PREFETCH_CACHE; break;  case (ConnectivityManager.TYPE_MOBILE): {  switch (tm.getNetworkType()) {  case (TelephonyManager.NETWORK_TYPE_LTE |   TelephonyManager.NETWORK_TYPE_HSPAP):   PrefetchCacheSize *= 4;  break;  case (TelephonyManager.NETWORK_TYPE_EDGE |   TelephonyManager.NETWORK_TYPE_GPRS):   PrefetchCacheSize /= 2;  break;  default: break;  }  break;  }  default: break;
    }  

后记:想要最大化效率与最小化电量的消耗,需要考虑的东西太多了,通常来说,会根据app的功能需求来选择有所侧重,那么前提就是需要了解到底哪些对效率的影响比较大,这有利于我们做出最优选择。

学习自:http://developer.android.com/training/efficient-downloads/connectivity_patterns.html

转载请注明出处:http://blog.csdn.net/kesenhoo,谢谢!

分类: Android Traffic
本文转自demoblog博客园博客,原文链接http://www.cnblogs.com/0616--ataozhijia/p/4324453.html如需转载请自行联系原作者
demoblog

[Android Traffic] 根据网络类型更改下载模式相关推荐

  1. android4.4 r漫游图标,Android N 修改网络类型,数据上下行和漫游图标相关布局和逻辑...

    实现效果如下图: 1.网络类型在左上方显示,如4G; 2.数据上下行在网络类型的下方: 3.当漫游时,漫游图标R将显示在信号强度上方,如红色箭头地方. 具体修改如下 alps/frameworks/b ...

  2. Android系统首选网络类型设置

    Android 首选网络类型式默认值的修改方法 源码部分 //设置 frameworks/base/packages/SettingsProvider/src/com/android/provider ...

  3. Docker系列文-----Docker的网络类型(4)

    Docker系列文-----Docker的网络类型(4) Docker里的常见文件及作用 Docker 内部的网络类型 1.桥接模式(默认): 2.host模式: 3.container模式 4.no ...

  4. android百度地图标方向,Android百度地图之方向感应和模式更改

    本文实例为大家分享了Android百度地图之方向感应和模式更改,供大家参考,具体内容如下 目标效果: 菜单中设置几种模式,点击可查看不同的地图形式,这里随便截几张图. 1.首先要去百度地图网站 htt ...

  5. [Android Traffic] 使用缓存来避免重复的下载

    转载自: http://blog.csdn.net/kesenhoo/article/details/7395817 Redundant Downloads are Redundant[重复下载是冗余 ...

  6. ANdroid如何实现网络重定向以及使用DownLoadManager类下载

    1.功能脚本: package com.talkweb.securitypay.test; import java.io.IOException; import java.net.URI; impor ...

  7. Android之如何获取网络类型并判断是否可用

    ConnectivityManager主要管理和网络连接相关的操作,通过getSystemService(Context.CONNECTIVITY_SERVICE)获 取网络连接的服务.因此我们可以通 ...

  8. Android网络类型判断(2g、3g、wifi)

    2019独角兽企业重金招聘Python工程师标准>>> 判断网络类型是wifi,还是3G,还是2G网络,对不同 的网络进行不同的处理,现将判断方法整理给大家,以供参考 说明:下面用到 ...

  9. android 特殊网络类型说明

    int  TYPE_MOBILE_DUN  A DUN-specific Mobile data connection. 提供了通过 Bluetooth 无线技术接入 Internet 和其它拨号服务 ...

最新文章

  1. Css3从IE6-IE9的支持查看
  2. 在一台服务器绑定多个IP
  3. php post 获取xml,php 获取post的xml数据并解析示例
  4. 在Ubuntu 18.04上实际安装OpenJDK 11
  5. Shell else if mysql_Shell if else语句(详解版)
  6. R语言基础入门(3)之数据类型与相应运算1
  7. Android设计模式--之命令模式
  8. atitit.自己动手开发编译器and解释器(2) ------语法分析,语义分析,代码生成--attilax总结
  9. bzoj1036 [ZJOI2008]树的统计Count
  10. com组件--GUID
  11. python如何用色度表示数值大小_Python人体肤色检测
  12. 机器学习笔记1.矩估计、极大似然估计。
  13. 新华三(H3C)的沉浮往事
  14. censo7安装mysql_centos7环境下在线安装mysql
  15. 利用BCD码计数器和7段码转换器子电路
  16. 数学之美之分形——C++及OpenCV实现Julia集和Mandelbrot集绘制
  17. java 将字符串首字母变大写
  18. 舌尖上的职场(二)一起去吃饭吧!(转)
  19. iOS有反检测能力的越狱工具shadow的分析和检测
  20. 消息推送(个推推送)的原理

热门文章

  1. Unity easyTouch移动代码(参考)
  2. 网络模型--Densely Connected Convolutional Networks
  3. css/js压缩工具
  4. Windows:安装Chrome OS/Chromium OS/CloudReady 到虚拟机VMware/VirtualBox
  5. java 随机生成常用汉字_Java随机生成中文汉字
  6. 服务器查看gpu状态_如何查看服务器gpu
  7. logback配置控制打印台异常信息_logback异常输出详细信息(调用堆栈)分析
  8. redis持久化 mysql_Redis 如何保持和MySQL数据一致
  9. 和远程ip_漏洞Microsoft Windows TCP/IP 远程执行代码漏洞威胁通告
  10. Java 常用设计模式 -- Builder模式