Transferring Data Without Draining the Battery - Modifying your Download Patterns Based on the Conne
来源:互联网 发布:android系统相册源码 编辑:程序博客网 时间:2024/06/05 22:46
When it comes to impact on battery life, not all connection types are created equal. Not only does the Wi-Fi radio use significantly less battery than its wireless radio counterparts, but the radios used in different wireless radio technologies have different battery implications.
Use Wi-Fi
In most cases a Wi-Fi radio will offer greater bandwidth at a significantly lower battery cost. As a result, you should endeavor to perform data transfers when connected over Wi-Fi whenever possible.
You can use a broadcast receiver to listen for connectivity changes that indicate when a Wi-Fi connection has been established to execute significant downloads, preempt scheduled updates, and potentially even temporarily increase the frequency of regular updates as described inOptimizing Battery Life lesson Determining and Monitoring the Connectivity Status.
Use Greater Bandwidth to Download More Data Less Often
When connected over a wireless radio, higher bandwidth generally comes at the price of higher battery cost. Meaning that LTE typically consumes more energy than 3G, which is in turn more expensive than 2G.
This means that while the underlying radio state machine varies based on the radio technology, generally speaking the relative battery impact of the state change tail-time is greater for higher bandwidth radios.
At the same time, the higher bandwidth means you can prefetch more aggressively, downloading more data over the same time. Perhaps less intuitively, because the tail-time battery cost is relatively higher, it's also more efficient to keep the radio active for longer periods during each transfer session to reduce the frequency of updates.
For example, if an LTE radio is has double the bandwidth and double the energy cost of 3G, you should download 4 times as much data during each session—or potentially as much as 10mb. When downloading this much data, it's important to consider the effect of your prefetching on the available local storage and flush your prefetch cache regularly.
You can use the connectivity manager to determine the active wireless radio, and modify your prefetching routines accordingly:
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;}
- Transferring Data Without Draining the Battery - Modifying your Download Patterns Based on the Conne
- Android: Transferring Data Without Draining the Battery
- Transferring Data Without Draining the Battery -
- android-Transferring Data Without Draining the Battery
- Transferring Data Without Draining the Battery - Redundant Downloads are Redundant
- Modifying your Download Patterns Based on the Connectivity Type
- Modifying your Download Patterns Based on the Connectivity Type
- Transferring Data Without Draining the Battery - Minimizing the Effect of Regular Updates
- Transferring Data Without Draining the Battery - Optimizing Downloads for Efficient Network Access
- CTreeCtrl/CListCtrl/CListBox With ToolTip Based On the Item Data
- Modifying a Dynamic Library Without Changing the Source Code
- Modifying the Navigation Stack
- 关于 Details On launch and content download, your app stores 15.83MB on the user's iCloud被拒问题
- Get XML tree format based on the tree data in SQL server table
- sorting data based on the value in second column of a file
- use a data or computed property based on the prop's value.
- The promise of MOM based on XMPP
- Unity3D File Based Assetbundles on the iPhone
- iOS开发入门教程之Objective-C · 协议(Protocols)
- 任务调度——java.util.Timer
- SP with parameter
- Sharepoint datetime 支持多个
- linux 单独安装oracle客户端
- Transferring Data Without Draining the Battery - Modifying your Download Patterns Based on the Conne
- UVA 11624 Fire!
- SQL SERVER 变量赋值
- Oracle如何限制固定IP的访问
- 使用icomoon制作icon字体
- OC中字符串创建与字符串处理函数
- you gun shang jia
- android listview的用法
- 为什么你应该(从现在开始就)写博客 --via刘未鹏