一、卡顿问题的几种原因复杂UI、图文混排的绘制量过大;在主线程上做网络同步请求;在主线程做大量的IO操作;运算量过大,CPU持续高占用;死锁和主子线程抢锁。二、监测卡顿的思路监测FPS:FPS是一秒显示的帧数,也就是一秒内画面变化数量。如果按照动画片来说,动画片的FPS就是24,是达不到60满帧的。也就是说,对于动画片来说,24帧时虽然没有60帧时流畅,但也已经是连贯的了,所以并不能说24帧时就算是卡住了。由此可见,简单地通过监视FPS是很难确定是否会出现卡顿问题了,所以我就果断弃了通过监视FPS来监控卡顿的方案。RunLoop:通过监控RunLoop的状态来判断是否会出现卡顿。RunLoop
线上监控的方案1、BlockCanary从Choregrapher中可以知道,帧的渲染是通过消息发送到主线程执行的。所以通过在计算msg的处理时间就可以判定是否发生卡顿。Looper.javapublicstaticvoidloop(){...for(;;){...//Thismustbeinalocalvariable,incaseaUIeventsetstheloggerPrinterlogging=me.mLogging;if(logging!=null){logging.println(">>>>>Dispatchingto"+msg.target+""+msg.callback+":
线上监控的方案1、BlockCanary从Choregrapher中可以知道,帧的渲染是通过消息发送到主线程执行的。所以通过在计算msg的处理时间就可以判定是否发生卡顿。Looper.javapublicstaticvoidloop(){...for(;;){...//Thismustbeinalocalvariable,incaseaUIeventsetstheloggerPrinterlogging=me.mLogging;if(logging!=null){logging.println(">>>>>Dispatchingto"+msg.target+""+msg.callback+":
一、卡顿介绍及优化工具选择1.1.卡顿问题介绍对于用户来说我们的应用当中的很多性能问题比如内存占用高、流量消耗快等不容易被发现,但是卡顿却很容易被直观的感受到,对于开发者来说,卡顿问题又难以定位,那么它究竟难在哪里呢?卡顿问题难点:产生原因错综复杂:代码、内存、绘制、IO等都有可能导致卡顿不易复现:线上卡顿问题在线下难以复现,这和用户当时的系统环境有很大关系(比如当时用户磁盘空间不足导致的IO写入性能下降从而引发了卡顿,所以我们最好能记录在发生卡顿时用户当时的场景)1.2.优化工具选择①、CPUProfiler图形化的形式展示执行时间、调用栈等信息全面,包含所有线程运行时开销严重,整体都会变慢
一、卡顿介绍及优化工具选择1.1.卡顿问题介绍对于用户来说我们的应用当中的很多性能问题比如内存占用高、流量消耗快等不容易被发现,但是卡顿却很容易被直观的感受到,对于开发者来说,卡顿问题又难以定位,那么它究竟难在哪里呢?卡顿问题难点:产生原因错综复杂:代码、内存、绘制、IO等都有可能导致卡顿不易复现:线上卡顿问题在线下难以复现,这和用户当时的系统环境有很大关系(比如当时用户磁盘空间不足导致的IO写入性能下降从而引发了卡顿,所以我们最好能记录在发生卡顿时用户当时的场景)1.2.优化工具选择①、CPUProfiler图形化的形式展示执行时间、调用栈等信息全面,包含所有线程运行时开销严重,整体都会变慢
努比亚技术团队原创内容,转载请务必注明出处。当用户抱怨手机在使用过程中存在卡顿问题的时候,会严重影响用户对手机品牌的好感和应用APP的体验,从而导致用户对手机品牌的忠诚度降低或应用APP的装机留存率下降。所以无论是手机设备厂商还是应用APP开发者,又或是Android系统的维护者Google都会对界面卡顿问题非常重视,会将界面的流畅度作为核心性能体验指标进行持续的优化。说到流畅度,本质上就是要解决用户操作手机过程中的界面丢帧问题,本来一秒钟屏幕上需要更新60帧画面,但是由于种种原因,这期间屏幕上只更新了55帧画面,这就是出现丢帧,在用户主观肉眼看来就是感知卡顿。那么当出现了丢帧卡顿的问题时,我
努比亚技术团队原创内容,转载请务必注明出处。当用户抱怨手机在使用过程中存在卡顿问题的时候,会严重影响用户对手机品牌的好感和应用APP的体验,从而导致用户对手机品牌的忠诚度降低或应用APP的装机留存率下降。所以无论是手机设备厂商还是应用APP开发者,又或是Android系统的维护者Google都会对界面卡顿问题非常重视,会将界面的流畅度作为核心性能体验指标进行持续的优化。说到流畅度,本质上就是要解决用户操作手机过程中的界面丢帧问题,本来一秒钟屏幕上需要更新60帧画面,但是由于种种原因,这期间屏幕上只更新了55帧画面,这就是出现丢帧,在用户主观肉眼看来就是感知卡顿。那么当出现了丢帧卡顿的问题时,我