① 安卓系统卡顿的原因
现在移动设备的流行,很多人发现有些APP在IOS系统比在安卓系统上流畅,根据这一问题大家展开了激烈的讨论,IOS系统的严谨性自不用说,这篇文章总结了一些安卓卡顿的原因!
首先,根据所说的问题,我用iPad和小米Pad对比了,直观感受上明显感觉iOS要流畅、舒服。
在这件事情上,作为开发者的我认为主要有以下三个原因:
速度曲线。
当你滑动界面然后松手,这时界面会继续滑动,然后速度减小,直到速度为0时停止。iOS下速度减小的这个过程比较慢,尤其是快要停的时候是慢慢停的,视觉上有种很顺滑的感觉;Android下则从松手到停要快很多,相比之下有种戛然而止的感觉。
从数据/技术角度来看这个事情,我们滑动界面的最终目的不是为了“动”,而是为了“停”,因此只要平滑的到达目的地,似乎越快完成这个过程越好,所以Android的选择是理所当然的。但事实是,大家普遍更喜欢iOS的方式,这样做显得更顺滑、更优雅。
帧率。
绝大部分时间两者都能保持60FPS左右的满帧率。但都会有偶尔的掉帧。并且Android上要比iOS上严重很多。(好吧,比起前两年,已经好太多了。)我前前后后滑动了几十次,iOS在前面遇到1次掉帧,后面就很稳定了。而Android几乎每滑动一次都会伴随一次掉帧。这完全就是真真实实的卡顿,用户必然会感觉到那一刻的不流畅。Android掉帧的原因我后面再详细分析。
触摸响应速度。
从手指碰到触摸屏,到屏幕上显示处理这次触摸产生的画面,是需要时间的。时间越短感觉越跟手。据说iOS的触摸屏的处理时间要比一般的Android手机快,这不是我的专长,不知道怎么验证。但在软件系统层面,Android的显示机制是APP-->SurfaceFlinger-->Display,这比传统的APP-->Display多了一步,主要基于这个原因,画面最终输出到屏幕要比传统的方式慢一帧(16.7ms)。
以上是个人分析的内容,如果有不对的地方,还请大家指正。作为APP开发者,系统的问题我们无可奈何,我们只有在APP的性能上下功夫,给用户一个好的体验。首先我们要做的就是预防,如何有效的进行预防?如何才能实时的检测卡顿现象的发生呢?就这一问题思考了很长时间,于是使用友盟+u-apm性能监测工具,这一工具在APP卡顿中起到哪些作用呢?
u-apm卡顿分析分析功能支持,卡顿趋势的查找、卡顿列表的筛选、卡顿模块的计算、卡顿分布的筛选、卡顿详情页面的展示,以上业务模块u-apm平台都以图表的形式直观的展示了实时数据,辅助开发者进行问题筛查。
卡顿分析功能可支持Android和iOS采集,Android支持5%采样率,iOS支持全量采集。提供卡顿趋势分析、卡顿列表及卡顿详情日志、支持分系统版本、运营商、APP版本、设备等6个纬度的查看卡顿分布;我们抽象了发生卡顿问题的堆栈信息构成卡顿模块,可通过倒序/正序聚合查看发现影响性能的最底层方法/核心原因。通过智能告警的方式推送到企业线上办公工具或邮件能力,便于团队内快速响应跟进问题。
总结
如今,事事都追求效率,快速,如果使用传统的检测方法,不仅耗费大量的时间不说,还会消耗大量的经费,u-apm的诞生,不仅能帮助开发者检测卡顿问题,还能检监测线上卡顿的产生,从而预防性能问题的发生。