最佳实践-基于LTPO的低功耗设计
使用场景
场景说明
在具备LTPO屏幕的设备上,基于显示内容的可变帧率能力,可以达到性能体验和功耗间的平衡。HarmonyOS支持可变帧率能力,开发者通过使用可变帧率接口,进行相关业务开发,可以享受可变帧率特性带来的功耗收益。
可变帧率能力支持开发者自定义应用业务的帧率,其常见的使用场景:
- 通过配置属性动画/显示动画的帧率属性参数,用于动画的绘制,具体可见请求动画绘制帧率。
- 通过申请一个独立的绘制帧率,用于UI的绘制,具体可见请求UI绘制帧率。
- 通过XComponent在Native侧申请独立的绘制帧率,用于游戏等自绘制内容的绘制,具体可见请求自绘制内容绘制帧率。
基于以上使用场景,结合众多实际开发案例,本文选取两个有代表性的案例展开介绍。
说明
开发者设置的期望帧率值不能代表最终实际效果,会受限于系统能力和屏幕刷新率。
基于LTPO实现循环动画
针对一些无限循环的动画效果,如转盘动画,需要尤为注意设置动画的可变帧率,如果长时间保持高帧率可能导致手机发热等现象发生。
效果展示
功耗对比
说明
使用DisplaySync去实现转盘动画,通过主动设置可变帧率,可以获取功耗的差异。
功耗测试方法参考章节2。
打开手机屏幕刷新率设置,可以看到刷新率变化;根据Profile工具,可以看到功耗变化如下所示。
从图中可以发现,当屏幕刷新率降低时,功耗会随之降低。
传入可变帧率(ExpectedFrameRateRange)时被屏幕感知,充分利用好屏幕的LTPO技术达到降低功耗的目的,屏幕的帧率没有时刻保持在最高帧率上刷新,所以功耗较低。
说明
不建议将ExpectedFrameRateRange中的expected、min、max都设置为120,否则会干扰系统的可变帧率机制运行,产生不必要的负载,进而影响到整机的性能和功耗。
如setExpectedFrameRateRange({ expected: 120, min: 120, max: 120 })。
基于LTPO实现滑动条
效果展示
功耗对比
说明
使用animateTo实现转盘动画,通过主动设置可变帧率,可以获取功耗的差异。
功耗测试方法参考章节2。
开启手机帧率设置,我们可以看到帧率变化;根据Profile工具,可以看到功耗变化如下所示。
从图中可以发现,当屏幕刷新率降低时,功耗会随之降低。
传入可变帧率(ExpectedFrameRateRange)时被屏幕感知,充分利用好屏幕的LTPO技术达到降低功耗的目的,屏幕的帧率没有时刻保持在最高帧率上刷新,所以功耗较低。
总结
综上所述,使用LTPO技术可以控制各个动效的刷新率,从而降低屏幕刷新率,进而控制功耗,为用户带来更加持久的续航时间和更高品质的使用体验。因此在开发业务时推荐使用可变帧率接口,可以享受可变帧率特性带来的功耗收益。