Android绘制优化原因

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

在这里插入图片描述

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

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

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

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

    还需要了解Android刷新机制

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值