Android性能优化:含内存优化、布局优化

前言

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

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


目录


1. 性能优化的目的

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

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

2. 需优化的性能指标

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


3. 优化方向

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

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

4. 流畅性

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

4.1 启动速度

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

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

4.2 页面显示速度

  • 优化原因(即 页面显示速度慢的原因) 
    a. 页面需绘制的内容(布局 & 控件)太多,从而导致页面测量时间过长 
    b. 绘制效率过低,从而导致绘制时间过长

  • 优化方案 
    布局优化 & 绘制优化。具体请看文章:

    1. Android性能优化:手把手带你全面了解 绘制优化
    2. Android性能优化:布局优化 详细解析(含、、讲解 )

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)

  • 优化原理 
    应用崩溃Crash很多情况是因为 内存溢出,即OOM;故 需避免出现 OOM现象

    内存溢出 简介: 

  • 优化方案 
    关于内存优化,具体请看文章:Android性能优化:这是一份全面&详细的内存优化指南

5.3 总结

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


6. 资源节省性

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

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

6.1 内存优化

  • 优化原因 
    避免因不正确使用内存 & 缺乏管理,从而出现 内存泄露(ML)、内存溢出(OOM)、内存空间占用过大 等问题,最终导致应用程序崩溃(Crash

  • 优化方向 
    常见的内存问题如下

    1. 内存泄露
    2. 内存抖动
    3. 图片Bitmap相关
    4. 代码质量 & 数量
    5. 日常不正确使用
  • 具体优化方案 
    下面,我将详细分析每项的内存问题 & 给出优化方案。具体请看文章:

  • Android性能优化:这是一份全面&详细的内存优化指南

  • Android性能优化:手把手带你全面了解 内存泄露 & 解决方案

6.2 减少安装包大小

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

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

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

  • 安装包结构 介绍

  • 优化方案

6.3 减少网络流量

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

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

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

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

6.4 减少应用的耗电量

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

具体优化方案如下: 

6.5 总结

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


7. 总结

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

https://blog.csdn.net/carson_ho/article/details/79708444

Android系统性能优化(69)---含内存优化、布局优化相关推荐

  1. Android性能优化:手把手教你如何让App更快、更稳、更省(含内存、布局优化等)...

    2019独角兽企业重金招聘Python工程师标准>>> 前言 在 Android开发中,性能优化策略十分重要 因为其决定了应用程序的开发质量:可用性.流畅性.稳定性等,是提高用户留存 ...

  2. android包内存放视频,Android性能优化:手把手教你如何让App更快、更稳、更省(含内存、布局优化等)...

    为其决定了应用程序的开发质量:可用性.流畅性.稳定性等,是提高用户留存率的关键 本文全面讲解性能优化中的所有知识,献上一份 Android性能优化的详细攻略, 含:优化方向.原因 & 具体优化 ...

  3. Android性能优化:如何让App更快、更稳、更省(含内存、布局优化等)

    前言 在 Android开发中,性能优化策略十分重要 因为其决定了应用程序的开发质量:可用性.流畅性.稳定性等,是提高用户留存率的关键 本文全面讲解性能优化中的所有知识,献上一份 Android性能优 ...

  4. 【Android】自定义FlowLayout,支持多种布局优化--android-flowlayout

    前言 flow layout, 流式布局, 这个概念在移动端或者前端开发中很常见,特别是在多标签的展示中, 往往起到了关键的作用.然而Android 官方, 并没有为开发者提供这样一个布局, 于是有很 ...

  5. 浅谈Android开机启动速度优化(含应用程序启动速度优化)

    众所周知Android开机启动速度较慢,于是如何加快启动速度便成为一个值得讨论的问题. 在查阅过许多资料后(特别是Google Group的android-platform),我整理总结出下面几点基本 ...

  6. 一篇文章搞定《Android布局优化》

    ------<一篇文章搞定Android布局优化> 前言 为什么要进行布局优化? Android绘制原理 双缓冲机制 布局加载原理 布局加载优化的一些方法介绍 AsyncLayoutInf ...

  7. 来点干货 | Android 常见内存泄漏与优化(二)

    作者 | 无名之辈FTER 责编 | 夕颜 出品 | CSDN(ID:CSDNnews) 在昨天的Android 内存泄漏问题多多,怎么优化?一文中,我们详细阐述了Java虚拟机工作原理和Androi ...

  8. Android性能优化(2):常见内存泄漏与优化(二)

    文章目录 1. Android虚拟机:Dalvik和ART 1.1 JVM与Dalvik区别 1.2 Dalvik与ART区别 1.3 Dalvik/ART的启动流程 2. 常见内存分析工具 2.1 ...

  9. Android超越iOS用户体验改进之安卓优化趋势

    根据权威智能手机操作系统的排名,Android.iOS是当今最受欢迎的智能手机操作系统.苹果公司的iOS是Android的最大竞争对手,从有用.易用.友好.视觉设计和品牌这五个用户体验设计目标来看,i ...

最新文章

  1. php 实现心芯图案,利用php输出不同的心形图案
  2. php中的parse_ini_file函数
  3. cemtos7上mysql8两个实例_centos7上配置mysql8的双主互写
  4. DAS 2020 Keynote Speech | Adobe 文档分析技术介绍
  5. python中的urlencode和urldecode
  6. python作用域(scope)(三分钟读懂)
  7. 招聘 | 浙大杨杰课题组-博士后与科研助理-医学AI/NLP
  8. 金融评分卡项目—4.GBDT模型在流失预警模型中的应用
  9. 天啊~ 少些一个等号的后果
  10. DOD,与cisco三层模型
  11. Codeforces Gym 100338B Spam Filter 字符串哈希+贝叶斯公式
  12. Spss 的基本方法使用步骤
  13. python处理时间序列非平稳_【Python算法】--非平稳时间序列分析
  14. Jeff Dean的传奇人生:超级工程师们拯救谷歌
  15. jQuery基础-定位与修改
  16. 新加坡政府开放数据门户网站
  17. 根据收入计算个人所得税
  18. python query函数的用法_python help函数实例用法
  19. hbuilder创建app并利用真机运行调试
  20. 团队成员筛选的核心秘档:三否三拒三不动

热门文章

  1. Linux C语言操作SQLite数据库
  2. [设计模式] - 工厂模式
  3. 写几个函数 输入10个职工的姓名和职工号_Excel函数速查一览表-函数应用案例-信息统计(2)...
  4. django 跳转其他网站_Django 实战 | 搭一个 GitHub 用户展示网站 04
  5. php mysql 拆分join_PHP拼接Sql,MySql拆分数据(substring_index())作为判断条件
  6. 《深入理解分布式事务》第四章 分布式事务的基本概念和理论知识
  7. 力扣836.矩形重叠
  8. Numpy 笔记: 多维数组的切片(slicing)和索引(indexing)【转】
  9. Alley Bird 跳跳鸟源码
  10. docker run 与docker start的区别