最佳实践-省电和深色模式下低功耗设计
https://developer.huawei.com/consumer/cn/doc/best-practices-V5/bpta-low-power-design-in-dark-mode-V5#section221914535123
深色模式
原理介绍
通过启用深色模式,可以进一步实现能耗的降低。首先,深色模式使用更少的像素点和背光,因此能够减少能量的消耗。其次,深色模式在OLED屏幕上可以关闭像素点,这一特性进一步减少了能耗。在实际开发过程中,应用需要根据当前设备状态来适配深色模式,开发者可以通过设置分层参数数据实现:
- 新建一个资源目录,选择需要根据深浅颜色模式(Color Mode)区分,进行分层数据读取。
- 在color.json文件中,设计对应组件读取的数据。
场景案例
在应用省电模式后,继续在“我的“界面下设计为深色模式可以在显示模块获得更大的收益,一般而言应用深色模式可以通过以下步骤实现:
- 创建深色模式资源文件夹:在项目的resources文件下,创建深色模式的Dark资源文件夹,如下图1所示。
图5 创建深色模式资源文件夹
- 资源文件适配:为深色模式下的界面设计相应的颜色和图标资源文件。
- 在主题中设置深色模式样式:在应用的主题中定义深色模式的样式,包括背景色、文本颜色、图标颜色等。
- 动态切换模式:在应用中实现动态切换深色模式和浅色模式的功能,使用户可以根据自己的喜好随时切换应用的界面模式。
- 测试和优化:在实现深色模式后,需要进行充分的测试,确保在深色模式下界面的显示效果和用户体验都符合预期,对用户进行友好的提示和引导。
图6 深色模式示意图
功耗分析
同一界面下,分别对比测试关闭和开启深色模式情况下的总耗电量和CPU模块、GPU模块、Display模块的耗电量。最终,使用IDE的Profiler工具检测得到的数据如下所示:
图7 使用深色模式前后耗电量对比
根据测试数据分析,我们可以得出以下结论:
- 在CPU和GPU模块方面,耗电量并没有发生显著变化,保持了相对稳定的状态。这表明在当前测试条件下,CPU和GPU的能耗未受到深色模式的影响。
- 显示模块的耗电量大幅下降,降幅达到了28.6%。
- 综合考虑以上数据,总耗电量有小幅度下降,降幅达到了14.2%。
这一结果表明深色模式的使用对设备的整体能耗具有积极的影响,可以有效降低设备的能耗水平。深色模式通过减少需要点亮的像素点数量,从而有效降低了显示模块的功耗。
其他优化措施
优化措施介绍
在省电模式和深色模式下,根据不同的应用场景,通常还有以下常用的优化方式:
- 主动降低应用亮度:可以通过主动降低应用的亮度来减少显示屏的功耗,延长设备的续航时间。
- 主动降低音量大小:降低设备的音量大小可以减少功耗,尤其是在使用耳机或扬声器时。这一优化方式可以在一定程度上减少设备的能耗,延长电池的使用时间。
- 停止一些冗余动效:减少动效的运行可以降低系统功耗的开销,例如过度的页面切换动画、图标动效等。
- 视频场景数据缓存按聚合方式下载:视频的wifi下载建议一次下载大量内容然后空闲一段时间,不建议连续不断的以小流量的速度下载(如每20s下载一次,每次下载3~5s)。
通过采取以上常用的优化方式,可以在省电模式和深色模式下进一步降低设备的能耗,延长电池的使用时间,提升用户体验。同时,结合测试数据的结果,可以更加明确地了解不同优化方式对设备能耗的影响,从而更好地指导实际的优化工作。
场景案例
在设计和开发应用时,需要考虑不同的使用场景需要不同的优化措施来降低功耗。例如,在运行视频应用程序时,可以采用降低亮度、调整刷新率和关闭不必要的背光等措施来降低功耗。而在运行音频应用程序时,则可以采用关闭不必要的传感器、减少CPU负载等措施来降低功耗。结合场景按需选择优化措施是非常重要的,可以帮助设备在不同的使用场景下提供最佳的性能和用户体验,并最大限度地降低功耗。
- 主动降低应用亮度
主动降低应用亮度总共分为以下几步:
- 根据UIAbility的context的配置信息,判断当前是否深色模式;
- 通过WindowStage的getMainWindowSync方法,获取当前主窗口Window对象;
- 使用Window对象的setWindowBrightness方法设置当前应用的屏幕亮度;
总结
针对”HMOS世界”的功耗优化这一场景,分别使用省电模式和深色模式对其优化,再增加其他可选的推荐优化项,测试其在对应的GPU模块和显示模块的耗电量。测试表明,相比较正常模式,当开启省电模式和深色模式后,功耗下降明显,而针对应用需求,主动降低应用亮度、去掉冗余动画等方式后,功耗在对应模块持续下降。其各项对比指标数据如下所示:
性能指标 | 开启省电模式 | 开启深色模式 | 主动降低应用亮度 |
---|---|---|---|
显示耗电量下降率 | 13.2% | 21.9% | 15.4% |
总耗电量下降率 | 12.0% | 12.5% | 12.4% |
GPU耗电量下降率 | 总耗电量下降率 | |
---|---|---|
去掉冗余动画 | 17.7% | 3.3% |
通过以上数据,可以清楚地看到采用省电模式和深色模式可以有效地减少设备的能耗。
- 省电模式能够有效延长电池的使用时间,降低设备的发热和功耗,为用户提供更加持久的设备使用体验。
- 相比亮色界面,深色模式在OLED和AMOLED屏幕上能够显著减少功耗,因为这些屏幕类型在显示黑色时能够关闭相应的像素,从而降低能耗。深色模式不仅能够减少屏幕的功耗,还能够在夜间或低光环境下减少眩光,提高用户的视觉舒适度。
- 除了省电模式和深色模式,根据特定场景进行定制的优化措施也可以进一步降低设备的功耗。并且,定制化的优化措施能够更好地满足用户的实际需求,提供更加个性化和高效的节能方案。
在应用开发中,开发者可以采用一些技术手段来降低应用的功耗为用户提供更加节能高效的应用体验,满足用户对于续航能力的需求。