带你读《2022技术人的百宝黑皮书》——APM 页面加载耗时校准(2)https://developer.aliyun.com/article/1340942?groupCode=taobaotech
可视算法初步演变
算法就此而止步了吗?其实并没有,我们认识到元素是有差异的,不能同一标准而视之,同时我们在计算方式也在做新的尝试。
在手淘中,又孵化出另一种计算方式:将所有合格 View 的面积累加起来,计算出来的面积占整个屏幕的面积占比就是加载比率,当加载比率超过 80%,就认为页面可视了。
针对 View 不再是无差别计算,我们有了更细的规则:
- View 在全部或者部分在屏幕范围内,且 Visibility 必须为 View.VISIBLE
- 只针对 View 进行计算,ViewGroup 不在计算范围之列,且不是 ViewStub
- 如果是 ImageView,Drawable 必须为 BitmapDrawable、NinePatchDrawable、AnimationDrawable、PictureDrawable
- 如果是 TextView,必须要有文字
- 如果是 EditText,判断是否已经聚焦,如果聚焦,整个页面直接加载完成
- 其他 View 默认加载完成
从1到2:Native页面校准
经过 APM 前期的发展,基础的页面加载耗时已经有了,但是准确性上还有待提高。
为了更为接近用户体验,我们决定对所有核心链路上的页面加载耗时进行校准(这里的用户体验终点即页面呈现完成)。其中心是对页面视图的理解:什么样的视图是用户关心的?什么视图是影响用户体感加载耗时的?
从这个角度上,校准的核心动作就呼之欲出了:提取视觉有用的有效元素出来计算,剔除用户不能感知的无效元素。
带你读《2022技术人的百宝黑皮书》——APM 页面加载耗时校准(4)https://developer.aliyun.com/article/1340940?groupCode=taobaotech