Android性能优化:性能优化指南(含内存优化、布局优化等)

前言

  • 在 Android开发中,性能优化策略十分重要
  • 因为其决定了应用程序的开发质量:可用性、流畅性、稳定性等,是提高用户留存率的关键
  • 本文全面讲解性能优化中的所有知识,献上一份 Android性能优化的详细攻略, 含:优化方向、原因 & 具体优化方案,希望你们会喜欢

文章较长,建议预留较长时间阅读 / 收藏


目录

示意图


1. 性能优化的目的

性能优化的目的是为了让应用程序App 更快、更稳定 & 更省。具体介绍如下:

  • 更快:应用程序 运行得更加流畅、不卡顿,能快速响应用户操作
  • 更稳定:应用程序 能 稳定运行 & 解决用户需求,在用户使用过程中不出现应用程序崩溃(Crash) 和 无响应(ANR)的问题
  • 更省:节省耗费的资源,包括 内存占有、电池量、网络资源等

2. 需优化的性能指标

针对上述目的,需优化的性能指标 含:流畅性、稳定性、资源节省性


3. 优化方向

  • 针对上述性能指标,本文主要讲解的优化方向如下:

示意图

  • 下面,我将针对每一种性能指标,详细讲解其优化方案

4. 流畅性

  • 优化原因 
    利于 减少使用中的卡顿、响应时间久等问题,给与用户一个操作流畅的体验
  • 优化方向 
    主要针对3个方面优化:启动速度、页面显示速度、响应速度

4.1 启动速度

  • 优化原因(即 启动速度慢的原因) 
    初次打开应用时,需加载很多资源 or 功能逻辑
  • 优化方案 
    采用 异步加载(多线程)、分步加载、延期加载的策略,减少启动应用时加载的任务,从而提高启动速度 

    由于我们打开的页面大多是Activity,下面将给出加速启动Activity的方式


示意图

4.2 页面显示速度

4.3 响应速度

  • 优化原因 
    应用程序出现 ANR 情况,从而导致 应用程序响应速度慢 

    关于ANR的简介如下


示意图

  • 优化方案 
    使用多线程,将大量 & 耗时操作放在工作线程中执行 
    1. 多线程的方式 包括:AsyncTask、继承 Thread类、实现 Runnable接口、Handler消息机制、HandlerThread等 
    2. 注:实际开发中,当一个进程发生了ANR后,系统会在 /data/anr目录下创建一个文件 traces.txt,通过分析该文件可定位出ANR的原因

 

4.4 其他优化方案

  • 合理的刷新机制 
    示意图

  • 动画的使用

    1. 根据不同场景选择 合适的动画框架
    2. 使用 硬件加速的方式 提高流畅度
    3. 使用动画后需停止动画

4.5 总结

下面,总结 关于流畅性的性能优化方案 
示意图


5. 稳定性

  • 影响Android 应用稳定性的原因有很多,主要是:应用崩溃(Crash)、应用无响应(ANR) 
    这2个错误的结果将导致程序无法使用
  • 下面,将主要讲解该2个优化方向:应用崩溃(Crash)、应用无响应(ANR)

5.1 应用无响应(ANR)

  • 简介

示意图

  • 优化原理 
    尽量避免应用程序出现 ANR 情况

  • 优化方案 
    使用多线程,将大量 & 耗时操作放在工作线程中执行

    1. 多线程的方式 包括:AsyncTask、继承 Thread类、实现 Runnable接口、Handler消息机制、HandlerThread
    2. 关于多线程的使用,可看我写的关于多线程的文集:多线程系列
    3. 注:实际开发中,当一个进程发生了ANR后,系统会在 /data/anr目录下创建一个文件 traces.txt,通过分析该文件可定位出ANR的原因

5.2 应用崩溃(Crash)

5.3 总结

下面,总结 关于稳定性的性能优化方案 
示意图


6. 资源节省性

  • 优化原因 
    由于移动设备的硬件性能有限,故减少应用程序的资源消耗显得十分重要

  • 优化方向 
    内存大小、安装包大小、耗电量 & 网络流量

6.1 内存优化

6.2 减少安装包大小

  • 优化原因 
    应用程序的安装包大小虽对应用程序的使用无影响,但影响的是: 

    1. 空间占有率:即 应用程序占有手机内存的大小
    2. 下载门槛:应用的安装包越大,用户下载的门槛越高 

     

    特别在移动网络下,用户下载应用时,对安装包大小的要求更高,因此减小安装包大小可让更多用户愿意下载 & 使用产品

  • 安装包结构 介绍

示意图

  • 优化方案

示意图

6.3 减少网络流量

  • 优化原因 
    每次获取资源时 都通过流量 & 网络加载的方式,将耗费大量网络流量

  • 优化方案 
    主要通过 缓存 减少网络流量,采用三级缓存方案:即 内存缓存 - 硬盘缓存- 数据库- 文件 - 网络缓存

    具体描述:当加载资源时,先从内存缓存中寻找;若内存缓存中没有,则从文件缓存中寻找;若文件缓存中没有,最终再通过流量从网络中加载获取

  • 具体应用 
    具体请看文章: 
    Android:手把手教你构建 WebView 的缓存机制 & 资源预加载方案

6.4 减少应用的耗电量

  • 优化原因 
    随着智能手机普及 & 应用程序App的功能发展,人们的日常生活都离不开智能手机 & 各式各样的应用程序App,故 应用程序的耗电量指标则显得十分重要

具体优化方案如下: 
示意图

6.5 总结

下面,总结 关于资源节省性的性能优化方案 
示意图


7. 总结

  • 区别于 功能性开发需求的短期性,性能优化是贯穿整个应用程序App项目的持续性需求;虽项目一开始时,性能优化的优先级较低,但当应用程序App的用户体量达到一定规模时,性能优化 则非常重要
  • 本文全面总结了Android开发中的性能优化 所有知识,含:优化方向、原因 & 具体优化方案,下面用2张图总结:

性能优化概述

示意图

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android系统性能优化对于解决卡顿、提升稳定性和优化续航方面起着重要的作用。 首先,在解决卡顿问题上,开发人员需要关注应用程序的UI线程。为了确保应用程序的流畅运行,可以采用以下优化措施:优化布局文件,减少层级嵌套;使用异步加载图片,避免在主线程中进行网络请求等耗时操作;合理利用缓存机制,避免重复加载数据。此外,还可以针对卡顿问题进行性能分析,通过工具查找耗时操作,并进行相应的优化。 其次,在提高系统稳定性方面,开发人员需要考虑异常崩溃的处理和内存管理。异常崩溃处理可通过捕获并记录崩溃异常来及时解决问题和改进代码。内存管理方面,应避免内存泄漏和过度分配内存,使用系统提供的工具来进行内存管理和优化。 最后,在续航优化上,需要考虑电源管理和资源使用的合理分配。通过使用省电模式、灵活控制后台任务和限制应用程序在后台运行等方式,最大程度地延长设备的电池寿命。另外,合理管理资源,避免过度使用CPU、网络和图形渲染等资源,有助于降低能耗并优化系统续航。 总之,Android系统性能优化是一个综合性的工作,需要开发人员关注卡顿问题、提升稳定性和优化续航方面的问题。通过合理使用工具和采取相应的优化措施,可以实现系统性能的有效提升。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值