胡凯

Android Training - 优化下载效率(Lesson 1 - 用有效率的网络访问方式来优化下载)

| Comments

在这一章,我们将学习为了最小化某些操作对电量的影响是如何处理下载,网络连接,尤其是无线电连接的。 下面几节课会演示了如何使用缓存caching,轮询polling,预取prefetching等技术来计划与执行下载操作。 我们还会学习无线电波的power-use属性配置是如何影响我们对于在何时,用什么,以何种方式来传输数据的选择。 当然这些选择是为了最小化对电池寿命的影响。

Dependencies and prerequisites
Android 2.0 (API Level 5) or higher

You should also read
Optimizing Battery Life

Lessons

  • Optimizing Downloads for Efficient Network Access[使用有效的网络连接方式来最优化下载]
    This lesson introduces the wireless radio state machine, explains how your app’s connectivity model interacts with it, and how you can minimize your data connection and use prefetching and bundling to minimize the battery drain associated with your data transfers.

Android Training - 优化电池续航能力(Lesson 4 - 判断并监测网络连接状态)

| Comments

Manipulating Broadcast Receivers On Demand[按需操控广播接收者]

简单的方法是为我们监测的状态创建一个BroadcastReceiver,并在manifest中为每一个状态进行注册监听。然后,每一个Receiver根据当前设备的状态来简单重新安排下一步执行的任务。[这句话感觉理解有点问题]

上面那个方法的副作用是,设备会在每次收到广播都被唤醒,这有点超出期望,因为有些广播是不希望唤醒设备的。

更好的方法是根据程序运行情况开启或者关闭广播接收者。这样的话,那些在manifest中注册的receivers仅仅会在需要的时候才被激活。

Android Training - 优化电池续航能力(Lesson 3 - 判断并监测网络连接状态)

| Comments

Determining and Monitoring the Connectivity Status[判断并监测网络连接状态]

通常我们会有一些计划的任务,比如重复闹钟,后台定时启动的任务等。但是如果我们的网络没有连接上,那么就没有必要启动那些需要连接网络的任务。我们可以使用ConnectivityManager来检查是否连接上网络,是何种网络。[通过网络的连接状况改变,相应的改变app的行为,减少无谓的操作,从而延长设备的续航能力]

1)Determine if You Have an Internet Connection[判断当前是否有网络连接]

显然如果没有网络连接,那么就没有必要做那些需要联网的事情。下面是一个检查是否有网络连接的例子:

Android Training - 优化电池续航能力(Lesson 2 - 判断设备的停驻模式)

| Comments

Determining and Monitoring the Docking State and Type[判断并监测设备的停驻状态与类型]

在上一课中有这样一句话:In many cases, the act of charging a device is coincident with putting it into a dock.

在很多情况下,为设备充电也是一种设备停驻方式

Android设备能够有好几种停驻状态。包括车载模式,家庭模式与数字对战模拟模式[这个有点奇怪]。停驻状态通常与充电状态是非常密切关联的。

停驻模式会如何影响更新频率这完全取决于app的设置。我们可以选择在桌面模式下频繁的更新数据也可以选择在车载模式下关闭更新操作。相反的,你也可以选择在车载模式下最大化更新交通数据频率。