为什么会卡顿丢帧?
Android系统每16ms发出VSYNC信号,触发GPU对UI渲染,如果你的耗时是20ms,系统在得到VSYNC信号的时候由于还没准备好,就无法进行更新任何内容,那么用户在32ms内看到的是同一帧画面,就丢帧了,会有卡顿现象。
实操体验
(1)实操环境
- 可选项,用自己的环境和代码也一样
- SamplePop代码下载
- SamplePop环境如下:
Android Studio 4.0 Gradle version 6.1.1 Android API version 30
(2)示例代码
public void onFramesLossMonitor(View view) {
Log.d(TAG, "onFramesLossMonitor: ");
startAnimator();
}
private void startAnimator() {
Log.d(TAG, "startAnimator: ");
ValueAnimator valueAnimator = ValueAnimator.ofFloat(0, 1f);
valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
mMonitorBgView.setAlpha((float) animation.getAnimatedValue());
monitorDoSomeThings();
}
});
value