小米电池休眠自动解除 手机充不进电7个小妙招


小米电池休眠自动解除 手机充不进电7个小妙招


背景Apple 在今年推出了支持 ProMotion 屏幕的 iPhone 设备,让 App 在 iPhone 13 Pro 和 iPhone 13 Pro Max 上的最大刷新帧率可到达 120Hz,极大优化了应用滑动/动画的流畅度体验 。
ProMotion 并不是一个新的概念,早在 2017 年 , Apple 推出的第二代 iPad Pro 便搭载了这一刷新率最高可达 120Hz 的屏幕 。在 iPad 上,高刷新率默认对所有 App 启用 。而也许是出于能耗的考虑,在 iPhone 上,Apple 并未将这个能力自动对所有 App 启用 , 而是需要开发者手动添加配置项来进行适配 。
近期有消息指出 iOS 15.4 beta 修正了这一行为(https://www.macrumors.com/2022/01/27/ios-15-4-apps-120-hz-promotion/) , 经过笔者验证额外的配置项依然是需要的,并且本文内容依然适用 。
本文介绍了在 iPhone 上对 ProMotion 动态帧率的适配时观察到的现象和遇到的问题,尝试推测了背后的原理,并探讨了解决问题的可能思路,最终基于调研结果在国际化短视频业务上线优化方案 , 取得了核心业务指标的收益 。
什么是帧率在深入探究 ProMotion 屏幕所带来的变化之前,我们先回顾一个似乎耳熟能详的概念:
什么是帧率?
众所周知,显示器并不能显示真正动态的画面 , 所有动画效果都是靠高速播放一帧帧静态画面欺骗人类视觉所造成的假象 。那么帧率最基本的定义便是屏幕内容的变化频率 , 是一个物理意义上的指标 。这种变化频率又由以下两个值共同决定:
刷新帧率:由屏幕硬件规格控制,传统显示设备一般为 59.94Hz,决定了帧率的上限 。渲染帧率:由 CPU -> GPU 渲染管线的执行速率控制 , 决定了帧率的下限 。理想情况下,渲染帧率和刷新帧率最好完全匹配,或者渲染帧率是刷新帧率的整数倍,这样实际展现的内容不会出现任何异常 。但现实中二者往往会出现不匹配的情况,卡顿就是其中之一:
卡顿

当 CPU -> GPU 的渲染管线遇到瓶颈 , 导致某一帧的渲染耗时大于屏幕的刷新间隔时 , 上一帧画面会在屏幕上多停留数帧的时间 。当这个滞留时间过长,用户感知到画面更新的延迟,这称为卡顿 。这也是 iOS 开发过程中会遇到的主要性能问题之一 。
实际帧率帧率并不等同于刷新率,它和所展示的内容息息相关:
展示静态画面时,理想情况只需要进行一次渲染,尽管屏幕仍然以 60Hz 或者更高的频率进行刷新,每次刷新所展示的内容(FrameBuffer)也未改变,用户感知到的实际帧率依然接近 0 。展示固定帧率的元素,例如 24FPS 的电影视频时,用户感知到的实际帧率自然也是 24 FPS 左右 。展示超高帧率的内容,例如 CS:GO 不锁帧跑 >200 FPS , 但由于显示设备刷新率限制 , 用户感知到的帧率依然不会超过硬件帧率的上限 。什么是动态刷新率ProMotion 本质上是对 Adaptive-Sync 显示标准的一种实现 。
Ref: https://en.wikipedia.org/wiki/Variable_refresh_rate
根据 Apple 官方文档显示 , ProMotion 屏幕支持的刷新率是可变的 。
具体来说 , 对 iPhone 而言:
The iPhone 13 Pro and iPhone 13 Pro Max ProMotion displays can present content on the display using the following refresh rates and timings:
120Hz (8ms), 80Hz (12ms), 60Hz (16ms), 48Hz (20ms), 40Hz (25ms), 30Hz (33ms), 24Hz (41ms), 20Hz (50ms), 16Hz (62ms), 15Hz (66ms), 12Hz (83ms), 10Hz (100ms)
而对 iPad Pro 来说:
The iPad Pro’s ProMotion display can present content on the display using the following refresh rates and timings:

推荐阅读