要说现如今在我们在日常生活中,使用范围最广和次数最多的 APP,微信可以说是第一,但我们也可以发现有的时候使用微信会出现卡顿、黑屏、掉线等等的情况出现,这极大程度上的会影响我们对 APP 的使用体验
那为什么会出现上述的这种情况呢?
一般来说,大内存的手机会拥有更为流畅的使用体验,因为手机的程序都是在 RAM 内存中进行读写的;而读写速度与手机的性能也有一定的关系,更大的 RAM 内存会给予手机更充足的缓冲空间;说了这么多其实就是两个字,“内存”
内存是作为程序运行中最为重要的资源存在的,当我们打开一个 APP 时,闪存会立即收到指令,将涵盖这个程序的所有信息发送到内存,同时处理器开始提升自己的工作频率,并将内存收到的数据以极快的速度进行运算处理,再将处理完的数据传送到内存中;此时程序才算完成了开启的过程
但在程序运行的过程中,我们必须做到合理的资源分配与回收,不合理的内存占用就会造成程序运行卡顿、黑屏、掉线、甚至崩溃的情况出现,所以我们需要在各种机器资源上保存优化的流畅性与稳定性,比如 UI 界面优化、电量优化、内存优化等,不过内存优化才是性能优化中的命门所在;这也是大厂高级工程师不可缺少的技术知识点;例如:
快手:
从上述图片中可以看出:大厂招聘高级 Android 开发工程师的条件中,性能优化这一块是必不可少的;这也是因为性能优化中所涉及的知识面既需要深度,同时又需要一定的广度
- 从深度上来说,考察一个面试者是不是有扎实的基础知识,比如操作系统原理、算法和数据结构等
- 从广度上来说,考察一个面试者的架构能力,比如是否考虑过项目的架构设计、如何解决高可用和可扩展的问题、是不是碰到问题之后刨根问底、是不是系统掌握了项目中所采用的相关技术等
所以性能优化可以说是最能体现面试者综合能力的工作,既能考察各种常用技术 ,也能考察工程能力、思维能力、架构能力等等;也就是说只要掌握了性能优化,实际上也代表着掌握了这些各方面的知识能力
那我们应该如何学习性能优化呢?下面给大家提供一张 Android 性能优化学习思维导图
希望这份思维导图能够给大家学习 Android 性能优化提供一个好的方向,并且我根据上述这份思维导图融合了这些年的工作经历及对网上的资料查询和整理, 最终将其整合了一份 Android 性能优化学习手册;有需要这份 Android 性能优化的学习手册 的朋友:可以 私信 发送 “进阶” 即可 免费获取,希望大家通过阅读这份 Android 性能优化学习手册,能够查漏补缺,完善自身的不足之处;早日攻克性能优化这一难题
Android 性能优化学习手册目录学习手册内容展示如下:
App 启动优化- 为什么要做 App 启动优化?
- 分析优化方向
- 相关数据测量
- 优化技巧
- App 启动方式
- App 启动流程简述
- 优化思路
- 优化方案
- 选择合适的布局类型
- 尽可能少用 wrap_content
- 用 SurfaceView 或 TextureView 代替普通 View
- 使用 RenderJavascript
- 使用 OpenGL 绘图
- 布局调优工具
- 卡顿分析
- 刷新率
- PerfDog
- CPU Profile
- 布局优化
- 过度绘制
- 解决过度绘制
- 层级优化
- 使用 merge
- ViewStub
- 不要在 onDraw 里创建对象
- 异步加载布局
- 崩溃的收集
- ANR
- 应用退出
- 崩溃处理
- 崩溃现场
- 崩溃分析
- 系统崩溃
- 网络指标
- 用户体验
- 网络监控
- Network Monitor
- Charles 抓包工具
- 优化 DNS 解析
- 连接池复用
- 数据压缩
- 弱网优化
- 网络安全
- Android 存储方式
- SharedPrefence
- 多进程问题 -> mmkv
- 已经有 xml/json,为什么要用 protobuf
- 项目中使用 protobuf
- 语言规范
- 字段约束
- 编码协议
- 瘦身原因
- APK 组成
- 代码瘦身
- 代码混淆
- 三方库处理
- 移除无用代码
- 资源瘦身
- 冗余资源
- 图片处理
- 资源混淆
- SO 瘦身
- SO 移除
- 动态加载 SO
有需要 Android 性能优化的学习手册 的朋友:可以 私信 发送 ”进阶“ 即可 免费获取
改变人生,没有什么捷径可言,这条路需要自己亲自去走一走,只有深入思考,不断反思总结,保持学习的热情,一步一步构建自己完整的知识体系,才是最终的制胜之道,也是程序员应该承担的使命
Android 架构师之路还很漫长,与大家一同共勉