Android绘制优化原因

Android 应用启动慢,使用时经常卡顿,是非常影响用户体验的,应该尽量避免出现。 卡顿的场景有很多,按场景可以分成 4 类:UI 绘制、应用启动、页面跳转、事件响应,如 图 2-1 所示。在这四种场景下又有多个小分类,基本上覆盖了卡顿的各个场景。

在这里插入图片描述

这 4 种卡顿场景的根本原因又可以分成两大类。

  1. 界面绘制:主要原因是绘制的层级深、页面复杂、刷新不合理,由于这些原因导致卡顿 的场景更多出现在 UI 和启动后的初始界面以及跳转到页面的绘制上。

  2. 数据处理:导致这种卡顿场景的原因是数据处理量太大,一般分为三种情况,一是数据 处理在 UI 线程(这种应该避免),二是数据处理占用 CPU 高,导致主线程拿不到时间片, 三是内存增加导致 GC 频繁,从而引起卡顿。

    要解决卡顿,就要先了解 Android 系统的显 示原理。

    还需要了解Android刷新机制

  • 卡顿的根本原因
  • 那卡顿的根本原因是什么呢,从 Android 系统的显示原理中可以看到,影响绘制的根本 原因有以下两方面:
  1. 绘制任务太重,绘制一帧内容耗时太长。
  2. 主线程太忙了,导致 VSync 信号来时还没有准备好数据导致丢帧。
    耗时太长,需要从 UI 布局和绘制上来具体分析,详见后面内容。这里我们主要讨论下 第二个方面。我们知道所有的绘制工作都是由主线程,也就是 UI 线程来负责,主线程的关 键职责是处理用户交互,在屏幕上绘制像素,并进行加载显示相关的数据。在 Android 应用 开发中,特别需要避免任何阻碍主线程的事情,这样应用程序才能保持对用户操作的即时响 应。
  • UI 生命周期控制
  • 系统事件处理
  • 消息处理
  • 界面布局
  • 界面绘制
  • 界面刷
    除了这些以外,尽量避免将其他处理放到主线程中,特别是复杂的数据计算和网络请求。
发布了119 篇原创文章 · 获赞 28 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/ldxlz224/article/details/98646316