BPFP系列:优化电池使用时间:确定和监控基座对接状态和类型
2016-04-13 15:19
148 查看
本文翻译或摘取自google官方文档 Best Practices for Performance http://developer.android.com/intl/zh-cn/training/best-performance.html
要确保在不影响用户体验的情况下最大程度地降低应用对电池使用时间的影响,您可以采取一些措施,例如在网络连接断开时停用后台服务更新,或在电池电量较低时降低此类更新的频率。
您可以根据手机的基座状态调整更新频率,具体取决于相关应用。如果设备插入的是桌面基座,您就可以提高体育中心类应用的更新频率;如果设备插入的是车载基座,您就可以完全停用此类更新。相反,如果设备插入的是车载基座且后台服务正在更新路况,您就可以最大程度地提高更新频率。
系统是以持续
您可以从
车载基座
桌面基座
低端(模拟)桌面基座
高端(数字)桌面基座
请注意,后两种类型仅适用于 API 级别为 11 及以上的 Android,因此如果您只关注基座类型,而不在意基座究竟是数字的还是模拟的,那么比较合适的做法就是查看全部三种类型:
您可以使用上一步骤中所述的技术在接收器实施过程中提取基座的类型和状态。
优化电池使用时间
为了打造一个优秀的应用,您应设法降低应用对电池使用时间的影响。阅读完本教程后,您就可以让自己构建的应用根据其所在设备的状态来监控和调整自身的功能和行为。要确保在不影响用户体验的情况下最大程度地降低应用对电池使用时间的影响,您可以采取一些措施,例如在网络连接断开时停用后台服务更新,或在电池电量较低时降低此类更新的频率。
确定和监控基座对接状态和类型
Android 设备支持几种不同类型的基座。这些类型包括车载或家用基座以及数字和模拟基座。许多基座可用于为插入的设备充电,因此基座状态通常与充电状态紧密相关。您可以根据手机的基座状态调整更新频率,具体取决于相关应用。如果设备插入的是桌面基座,您就可以提高体育中心类应用的更新频率;如果设备插入的是车载基座,您就可以完全停用此类更新。相反,如果设备插入的是车载基座且后台服务正在更新路况,您就可以最大程度地提高更新频率。
系统是以持续
Intent的形式广播基座状态的,这样您就可以查询设备是否插入了基座,如果已插入,您还可以查询基座类型。
确定当前的基座状态
基座状态详情是以附加信息的形式包含在ACTION_DOCK_EVENT操作的持续广播中的。由于这属于持续广播,因此您无需注册
BroadcastReceiver。您可以将传入
null的
registerReceiver()作为广播接收器直接调用,具体如下一代码段所示。
IntentFilter ifilter = new IntentFilter(Intent.ACTION_DOCK_EVENT); Intent dockStatus = context.registerReceiver(null, ifilter);
您可以从
EXTRA_DOCK_STATE附加信息中提取当前的基座对接状态:
int dockState = battery.getIntExtra(EXTRA_DOCK_STATE, -1); boolean isDocked = dockState != Intent.EXTRA_DOCK_STATE_UNDOCKED;
确定当前的基座类型
用户可以将设备插入以下四种类型的基座:车载基座
桌面基座
低端(模拟)桌面基座
高端(数字)桌面基座
请注意,后两种类型仅适用于 API 级别为 11 及以上的 Android,因此如果您只关注基座类型,而不在意基座究竟是数字的还是模拟的,那么比较合适的做法就是查看全部三种类型:
boolean isCar = dockState == EXTRA_DOCK_STATE_CAR; boolean isDesk = dockState == EXTRA_DOCK_STATE_DESK || dockState == EXTRA_DOCK_STATE_LE_DESK || dockState == EXTRA_DOCK_STATE_HE_DESK;
监控基座状态或类型的变化
无论设备是否插入了基座,系统都会广播ACTION_DOCK_EVENT操作。要监控设备基座状态的变化,您只需在应用清单中注册广播接收器即可,具体如以下代码段所示:
<action android:name="android.intent.action.ACTION_DOCK_EVENT"/>
您可以使用上一步骤中所述的技术在接收器实施过程中提取基座的类型和状态。
相关文章推荐
- CentOS 6.5+Syslog-ng+LogZilla搭建中央日志服务器
- UVa 110 - Meta-Loopless Sorts
- CentOS下Storm 1.0.0集群安装详解
- shell字符串处理-数组-expect
- BPFP系列:优化电池使用时间:监控电池电量和充电状态
- shell 基础
- centos6.5安装open-falcon笔记
- PopupWindow 下拉选择
- STORM配置TOPOLOGY问题
- linux下无法删除文件
- nginx linux环境下的安装
- Spring错误:org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.binding.Bi
- 企业内部在centos7.2系统中必杀技NTP时间服务器及内网服务器时间同步(windows和linux客户端同步)
- 企业内部在centos7.2系统中必杀技NTP时间服务器及内网服务器时间同步(windows和linux客户端同步)
- linux制作可启动iso
- openwrt 更改 debug 等级(hostapd)
- 启动Tomcat出现Using CATALINA_BASE
- Centos6.5使用mdadm安装软RAID
- Spark学习之Hadoop安装与测试
- Android 从内核源码关掉Android SELinux