Android-卡顿分析

作者: 森屿暖茶 | 来源:发表于2021-05-03 18:49 被阅读0次

APP的优化是任重而道远的过程,必须在意每一个环节,否者当你想要优化的时候,发现到处都是坑,已经不知道填补哪里了,所以我们必须一点一滴的做起。

卡顿

大多数用户感知到的卡顿等性能问题的最主要根源都是因为渲染性能。Android系统每隔大概16.6ms发出VSYNC信号,触发对UI进行渲染,如果每次渲染都成功,这样就能够达到流畅的画面所需要的60fps,为了能够实现60fps,这意味着程序的大多数操作都必须在16ms内完成。

原因

有很多原因可以导致丢帧, 一般主线程过多的UI绘制、大量的IO操作或是大量的计算操作占用CPU,都会导致App

丢帧

如果某个操作花费时间是24ms,系统在得到VSYNC信号的时候就无法进行正常渲染,这样就发生了丢帧现象。那么用户在32ms内看到的会是同一帧画面。

原因

有很多原因可以导致丢帧, 一般主线程过多的UI绘制、大量的IO操作或是大量的计算操作占用CPU,都会导致App

Trace API

Androidstudio的Profiler也提供了Trace的使用你可以自己选择某一段区域,也可以代码生成Trace文件,然后拖动到Androidstudio内打开查看。提供的2种方式比较灵活。

Looper日志检测卡顿

Android主线程更新UI。如果界面1秒钟刷新少于60次,即FPS小于60,用户就会产生卡顿感觉。简单来说,Android使用消息机制进行UI更新,UI线程有个Looper,在其loop方法中会不断取出message,调用其绑定的Handler在UI线程执行。如果在handler的dispatchMesaage方法里有耗时操作,就会发生卡顿。

只要检测 msg.target.dispatchMessage(msg) 的执行时间,就能检测到部分UI线程是否有耗时的操作。注意到这行执行代码的前后,有两个logging.println函数,如果设置了logging,会分别打印出>>>>> Dispatching to和<<<<< Finished to 这样的日志,这样我们就可以通过两次log的时间差值,来计算dispatchMessage的执行时间,从而设置阈值判断是否发生了卡顿。

相关文章

  • Android-卡顿分析

    APP的优化是任重而道远的过程,必须在意每一个环节,否者当你想要优化的时候,发现到处都是坑,已经不知道填补哪里了,...

  • 无标题文章

    APP性能优化 UI卡顿优化 View的绘制原理 UI卡顿原理分析 UI卡顿检测分析 BlockCanary原理分...

  • 应用卡顿问题分析

    1.应用卡顿原理分析 卡顿问题的表现启动卡顿:启动白屏和启动动画卡顿运行卡顿:点击相应慢,列表滑动卡,动画卡顿 原...

  • 性能优化

    1 卡顿分析 systrace ,系统层面。2 卡顿分析 studio cpu profile ,应用层面。3 s...

  • 卡顿分析

    最近开发中遇到一个问题,Activity之间跳转卡顿,点击按钮后,2-3秒后才会跳转到新的页面。针对此问题进行了分...

  • iOS 拨打电话卡顿问题解决

    通过bugly日志卡顿分析发现有很多日志显示在拨打电话时有卡顿现象,通过分析发现卡顿设备为10.2以上的10.*系...

  • ios卡顿原因和性能优化

    卡顿分析和性能优化 卡顿参考: https://cloud.tencent.com/developer/artic...

  • 深入卡顿优化

    前言 我们经常会遇到卡顿问题 而且卡顿问题往往很难解决与复现 非常的依赖卡顿现场 所以我们来深入分析一下卡顿优化 ...

  • 应用卡顿优化

    对于卡顿分析,首先需要明确分析的因素,即影响卡顿有哪些点,是 CPU 繁忙,线程锁资源导致的阻塞,IO 耗时操作,...

  • Android开发页面帧率优化有感

    Android APP 优化工具分析Android App优化之消除卡顿Android性能优化:卡顿优化Andro...

网友评论

    本文标题:Android-卡顿分析

    本文链接:https://www.haomeiwen.com/subject/xdbzlltx.html