【Android Training - Performance】优化电池续航能力[Lesson 4 - 按需操控Broadcast Receivers是否开启]

来源:互联网 发布:计算机系统监控软件 编辑:程序博客网 时间:2024/04/29 02:42

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

  • 简单的方法是为我们监测的状态创建一个BroadcastReceiver,并在manifest中为每一个状态进行注册监听。然后,每一个Receiver根据当前设备的状态来简单重新安排下一步执行的任务。[这句话感觉理解有点问题]
  • 上面那个方法的副作用是,设备会在每次收到广播都被唤醒,这有点超出期望,因为有些广播是不希望唤醒设备的。
  • 更好的方法是根据程序运行情况开启或者关闭广播接收者。这样的话,那些在manifest中注册的receivers仅仅会在需要的时候才被激活。

Toggle and Cascade State Change Receivers to Improve Efficiency

[切换是否开启这些状态Receivers来提高效率]
  • 我们可以使用PackageManager来切换任何一个在mainfest里面定义好的组件的开启状态。
  • 可以使用下面的方法来开启或者关闭任何一个broadcast receiver:
ComponentName receiver = new ComponentName(context, myReceiver.class);PackageManager pm = context.getPackageManager();pm.setComponentEnabledSetting(receiver,        PackageManager.COMPONENT_ENABLED_STATE_ENABLED,        PackageManager.DONT_KILL_APP)

  • 使用这种技术,如果我们判断到网络链接已经断开,那么可以在这个时候关闭除了connectivity-change的之外的所有Receivers。
  • 相反的,一旦重新建立网络连接,我们可以停止监听网络链接的改变。而仅仅在执行需要联网的操作之前判断当前网络是否可以用即可。
  • 你可以使用上面同样的技术来暂缓一个需要带宽的下载操作。可以开启receiver来监听是否连接上Wi-Fi来重新开启下载的操作。

学习自:http://developer.android.com/training/monitoring-device-state/manifest-receivers.html
转载请注明出处:http://blog.csdn.net/kesenhoo,谢谢!

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 10个月宝宝上火怎么办 1个月的宝宝上火怎么办 2个月的婴儿上火怎么办 1岁宝宝不吃奶粉怎么办 奶水不够宝宝又不吃奶瓶怎么办 13岁脸上长粉刺怎么办 脸敷面膜过敏了怎么办 婴儿面膜是假的怎么办 一贴面膜就过敏怎么办 一敷面膜就过敏怎么办 敷了面膜后过敏怎么办 脸做面膜过敏了怎么办 二十几年的疤痕怎么办 三星c5听筒坏了怎么办 胖子减肥后皮肤松弛怎么办 小婴儿脸上长癣怎么办 痘痘里面有脓怎么办 牛仔外套买大了怎么办 脸上痘印红红的怎么办 眼罩里的水干了怎么办 面膜水进眼睛里怎么办 面膜用剩的精华怎么办 火山泥面膜边干怎么办 用完撕拉面膜后怎么办 皮肤锁水能力差怎么办 抱枕永久了脏了怎么办 新买的棉被掉毛怎么办 羊毛被总是窜毛怎么办 骆毛被子掉毛怎么办 太阳晒伤皮肤痒怎么办 皮肤被太阳晒伤怎么办 晒伤皮肤有斑怎么办 晒伤的皮肤变痒怎么办 晒了太阳脸发红怎么办 新棉被没太阳晒怎么办 白掌的叶子发黄怎么办 栀子花长得太高怎么办 新羊毛被有味道怎么办 新买的衣服掉毛怎么办 羊毛被用水洗了怎么办 羊毛被一股骚味怎么办