Android-电量优化
APP的优化是任重而道远的过程,必须在意每一个环节,否者当你想要优化的时候,发现到处都是坑,已经不知道填补哪里了,所以我们必须一点一滴的做起。
电量优化
电池续航时间是移动用户体验中最重要的一个方面。没电的设备完全无法使用。因此,对于应用来说,尽可能地考虑电池续航时间是至关重要的。在我们开发时对于单个APP应该注意能够:
减少操作:您的应用是否存在可删减的多余操作?例如,是否可以缓存已下载的数据,而不是每次重新下载数据?
推迟操作:应用是否需要立即执行某项操作?例如,是否可以等到设备充电后或者Wififi连接时(通常情况下使用移动网络要比WIFI更耗电 )再将数据备份到云端?
合并操作:工作是否可以批处理,而不是多次将设备置于活动状态?比如和服务器请求不同的接口获取数据,部分接口是否可以合并为一个?
Doze低电耗模式和StandBy待机模式、
从 Android 6.0(API 级别 23)开始,Android 引入了两项省电功能,通过管理应用在设备未连接至电源时的行为方式,帮助用户延长电池寿命。
Doze低电耗模式
如果设备未充电、屏幕熄灭、让设备在一段时间内保持不活动状态 ,那么设备就会进入Doze模式。在Doze模式下,系统会尝试通过限制应用访问占用大量网络和 CPU 资源的服务来节省电量。它还会阻止应用访问网络,并延迟其作业、同步和标准闹钟。
StandBy待机模式
应用待机模式会延迟用户近期未与之交互的应用的后台网络活动。当用户将设备插入电源时,系统会从待机状态释放应用,允许它们自由访问网络并执行任何待处理的作业和同步。如果设备长时间处于闲置状态,系统将允许闲置应用访问网络,频率大约每天一次。
白名单
系统提供了一个可配置的白名单,将部分免除低电耗模式和应用待机模式优化的应用列入其中。 在低电耗模式和应用待机模式期间,列入白名单的应用可以使用网络并保留部分唤醒锁定。不过,列入白名单的应用仍会受到其他限制,就像其他应用一样。例如,列入白名单的应用的作业和同步会延迟(在6.0及以下的设备上),并且其常规 AlarmManager 闹钟不会触发。应用可以调用 PowerManager.isIgnoringBatteryOptimizations() 来检查应用当前是否在豁免白名单中。
可以在设置中的电池优化手动配置白名单 。另外,系统也提供了一些方法,让应用要求用户将其列入白名单。
设置让用户自行选择
startActivity(new Intent(Settings.ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS)); //让用户直接转到电池优化设置界面,以便他们在其中添加该应用。
对话框让用户选择
具有 REQUEST_IGNORE_BATTERY_OPTIMIZATIONS 权限的应用可以触发一个系统对话框,让用户直接将该应用添加到白名单,而无需转到“设置”。此类应用将通过触发 ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONSIntent 来触发该对话框。
检测和监控
我们也可以使用Androidstudio提供的profiler 的energy进行耗电检测
WorkManager
WorkManager 是Jet[ack一个针对原有的 Android 后台调度的开源库,并且它可以监测手机的各种状态,在设定的条件下,执行后台任务。可协助应用进行各种优化,其中就包括耗电优化。