美文网首页
UI性能优化

UI性能优化

作者: 细雨蒙情 | 来源:发表于2018-07-25 16:02 被阅读51次

1、Android绘制显示原理

Android应用程序把经过测量(measure)、布局(layout)、绘制(draw)的数据发送系统服务,surfaceFinger通过显示刷新机制渲染到屏幕上。
Android的显示刷新机制是一秒钟60帧,即16ms刷新一次,如果16ms未能完成渲染,则会发生丢帧,导致页面卡顿。

2、页面卡顿原因

  • 绘制任务太重,16ms未能完成绘制
  • 主线程执行耗时操作,当系统要刷新时,主线程没能准备好绘制数据
  • 频繁GC,停止工作线程,导致页面卡顿

3、优化策略

  • 避免在主线程进行耗时操作,例如请求网络、IO读取数据
  • 避免过度绘制,设置——开发者——GPU过度绘制,去除多余背景,getWindow().setBackgroundDrawable(null)。
  • 布局优化:
    (1)不影响层级深度的情况下,使用LinearLayout和FrameLayout而不是RelativeLayout。RelativeLayout测量时对子布局的水平和竖直方向调用2次。
    (2) 使用<include>复用布局(例如标题栏),<merge>减少布局层次,LayoutInflater遇见<merge>标签只会把解析子View,把加到<merge>的父View中,不会增加布局层次,配合<incldue>使用。
    https://blog.csdn.net/a740169405/article/details/50473909
    (3)<ViewStub>
    ViewStub是view的子类,测试时设置宽高为0,并且不绘制,同时设置自身不可见(Gone),达到延迟加载的目的。
    https://blog.csdn.net/a740169405/article/details/50351013

4、检测卡顿

  • 对主线程Looper.loop中的msg.target.dispatchMessage(msg)方法的耗时进行检测,源码中执行前后有日志打出,通过过滤日志能知道耗时。
  • Andriod系统中每16ms发出信号刷新屏幕,SDK中有相关的类和回调,检测2次刷新的间隔时间,大于16ms则打印出堆栈信息定位问题。
    https://blog.csdn.net/lmj623565791/article/details/58626355
    https://blog.csdn.net/u013493809/article/details/62215250
  • TraceView
    使用的思路分析:
    (1)调用次数不多,但每次耗时长的方法
    (2)自身耗时不长,但频繁调用的方法
    关于第一种,通常做法是先按Cpu Time/Call降序排序,然后看Incl Cpu Time的大小,综合起来越大的性能问题越严重
    关于第二种,通常做法是按Calls + Recur Calls/Total降序排序,然后看Incl Cpu Time的大小,综合起来越大的性能问题越严重
    https://blog.csdn.net/qianrushi9/article/details/58605827

参考资料

https://www.jianshu.com/p/9755da0f4e8f
https://www.jianshu.com/p/307ba8911799
https://blog.csdn.net/lmj623565791/article/details/45556391/

相关文章

  • Android UI性能优化

    Ui性能优化 参考博客:Android UI性能优化实战 识别绘制中的性能问题Android UI性能优化详解 1...

  • 性能优化

    Android UI性能优化实战 识别绘制中的性能问题性能优化(二) UI 绘制优化 通过Hierarchy Vi...

  • Android UI优化

    Android性能优化 - UI篇Android性能优化 - CPU/GPU篇 一、UI层级优化 借助工具:Hie...

  • Android性能优化 - CPU/GPU篇

    Android性能优化 - UI篇Android性能优化 - CPU/GPU篇 前言 本篇主要讲解APP性能优化路...

  • Android性能优化大纲

    1.内存优化 内存泄漏 优化分析 内存优化工具 2.UI优化 UI卡顿分析 渲染优化 计算性能优化 3.电量优化 ...

  • Android客户端性能优化实践

    一、关于App性能优化 1. 性能优化分类 Google官方给出的性能优化教程,主要分为以下几类:1)布局与UI渲...

  • IOS - UIView绘制流程 (displayLayer)(

    性能优化之 UI渲染优化 - 异步渲染 使用displayLayer进行异步绘制

  • 无标题文章

    APP性能优化 UI卡顿优化 View的绘制原理 UI卡顿原理分析 UI卡顿检测分析 BlockCanary原理分...

  • Android性能优化

    Android性能优化 Android 性能优化的方法 性能问题一般分为3类 UI卡顿 内存问题 耗电问题 布局优...

  • 安卓开发详解—Android应用移动设备电池耗电性能分析

    前言 有了UI性能优化、内存性能优化、代码编写优化之后我们在来说说应用开发中很重要的一个优化模块—–电量优化。 A...

网友评论

      本文标题:UI性能优化

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