Skip to content

ddms调试RN左滑安卓端性能问题 #22

@yzsolo

Description

@yzsolo
var time = '2016/07/05';

由于写的左滑组件在安卓下表现吃力,一开始非常卡顿,最后才发现是dev mode没关。

关了dev mode之后,表现力开始有所好转,和没关dev mode时的表现的效果不在一个层级。但就算是这样,和在ios上的表现比起来,安卓下的滑动效果还是不够丝滑,滑动过程中能明显感觉卡顿的感觉,打开手机的gpu分析工具发现渲染也一直没有超过16,这样子的情况下,感觉应该是滑动和js执行相互影响了。

在准备用官方推荐的systrace调试的时候,发现trace.html文件报错:Object.observe is not a function,这个应该和浏览器有关,google一下发现这确实是浏览器的版本bug。最后朋友推荐我尝试用android studio下的ddms工具进行调试,it`s work,调试信息如下:
对单个滑出收回进行性能录制:
anroid preview

从这幅图中可以知道跑js的进程一直处于计算处理的状态,这是必然的,因为我的手势操作都是在js处理,之后在release,terminal的状态下将自动滑出和收回换成了LayoutAnimation,这样做确实在手指离开或失去响应器的时候让动画更流畅,但在move的时候,安卓下依然卡顿,这个时候单个滑出收回的性能录制如下:
android preview

这么看上下两幅图好香没什么区别,但后者在release和terminal的状态下的顺畅程度比前者超出了一大截。

------------ 2016/07/07 9:32 -------------------------------------
从图上看js进程依然很吃紧,LayoutAnimation在处于release和terminal时很顺畅的原因在于它的动画过程不会阻塞js的执行。这样看来,上面两幅图其实是一样的,因为该执行的js在执行,不该执行的js也还是在执行。
这样根本无法达到丝滑的标准,弃坑,另寻他路。
很久没写页面了,因为从大一开始就开始写,再加上心中有一个js一统天下的梦想(当然,也不排斥其他语言,学习方向不同罢了),所以css3几年前出来的时候也没有过多的关注,最多用用圆角(这个出来的时候把一群切图人员高兴坏了吧)。当时也知道transform等一些css3动画实践,但其实动画在一些页面里用的不多,加上早就转向了js,样式也不再接触了。
所以我现在才准备用transform实现一下,因为是样式,所以肯定和js不同路吧。重构了滑动的部分代码之后,单个滑出收回性能录制如下:
android preview
是的,安卓现在丝滑了。

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions