美文网首页
布局优化

布局优化

作者: Time_x | 来源:发表于2019-05-26 19:08 被阅读0次

    总结:布局优化

    布局是否合理主要影响的是页面测量时间的多少,我们知道一个页面的显示测量和绘制过程都是通过递归来完成的,多叉树遍历的时间与树的高度h有关,其时间复杂度 O(h),如果层级太深,每增加一层则会增加更多的页面显示时间,所以布局的合理性就显得很重要。

    那布局优化有哪些方法呢,主要通过减少层级、减少测量和绘制时间、提高复用性三个方面入手。

    总结如下:

    减少层级。合理使用 RelativeLayout 和 LinerLayout,合理使用Merge。

    提高显示速度。使用 ViewStub,它是一个看不见的、不占布局位置、占用资源非常小的视图对象。

    布局复用。可以通过 标签来提高复用。

    尽可能少用wrap_content。wrap_content 会增加布局 measure 时计算成本,在已知宽高为固定值时,不用wrap_content 。

    删除控件中无用的属性。

    2,避免过度绘制

    过度绘制是指在屏幕上的某个像素在同一帧的时间内被绘制了多次。在多层次重叠的 UI 结构中,如果不可见的 UI 也在做绘制的操作,就会导致某些像素区域被绘制了多次,从而浪费了多余的 CPU 以及 GPU 资源。

    如何避免过度绘制呢,如下:

    布局上的优化。移除 XML 中非必须的背景,移除 Window 默认的背景、按需显示占位背景图片

    自定义View优化。使用 canvas.clipRect()来帮助系统识别那些可见的区域,只有在这个区域内才会被绘制。

    3,启动优化

    通过对启动速度的监控,发现影响启动速度的问题所在,优化启动逻辑,提高应用的启动速度。启动主要完成三件事:UI 布局、绘制和数据准备。因此启动速度优化就是需要优化这三个过程:

    UI 布局。应用一般都有闪屏页,优化闪屏页的 UI 布局,可以通过 Profile GPU Rendering 检测丢帧情况。

    启动加载逻辑优化。可以采用分布加载、异步加载、延期加载策略来提高应用启动速度。

    数据准备。数据初始化分析,加载数据可以考虑用线程初始化等策略。

    4,合理的刷新机制

    在应用开发过程中,因为数据的变化,需要刷新页面来展示新的数据,但频繁刷新会增加资源开销,并且可能导致卡顿发生,因此,需要一个合理的刷新机制来提高整体的 UI 流畅度。合理的刷新需要注意以下几点:

    尽量减少刷新次数。

    尽量避免后台有高的 CPU 线程运行。

    缩小刷新区域。

    相关文章

      网友评论

          本文标题:布局优化

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