当前位置:网站首页>探索APP性能优化之稳定性优化(解决方案)
探索APP性能优化之稳定性优化(解决方案)
2022-08-09 08:18:00 【沈页】
前言
Android 稳定性优化是一个需要长期投入,持续运营和维护的一个过程,不仅深入探讨了 Java Crash、Native Crash 和 ANR 的解决流程及方案,还分析了其内部实现原理和监控流程。本文对稳定性优化方面的知识做了一个全面总结,主要内容如下:
如何提升App的稳定性
一般性的App能接触到稳定性的需求其实并不多,只有大型的处于稳定运营期的App才会重视App的稳定性,稳定性实际上是一个大问题,一个稳定的产品才能够保证用户的留存率,所以稳定性是质量体系中最基本也是最关键的一环:
- 稳定性是大问题,Crash是P0优先级:对于用户来说很难容忍你的应用发生崩溃。
- 稳定性可优化的面很广:不仅仅是指崩溃,像卡顿、耗电等也属于稳定性优化的范畴,对于移动端高可用这个标准来说,性能优化只是高可用的一部分,还有一部分就是应用业务流程功能上的可用。
稳定性维度
- Crash维度:一般会将Crash单独作为一项重要指标进行突破,最常见的统计指标就是Crash率,后面会说到。
- 性能维度:启动速度、内存、卡顿、流量、电量等等,在解决应用的Crash之后,就应该着手保障性能体系的稳定。
- 业务高可用维度:业务层面的高可用是相当关键的一步,需要使用多种手段去保障App业务的主流程及核心路径的可用性。
稳定性优化概述
如果App到了线上才发现异常,其实已经造成了损失,所以稳定性优化重点在于预防
- 重在预防、监控必不可少:从开发到测试到发布上线运维这些各个阶段都需要预防异常的发生,或者说要将发生异常造成的损失降到最低,用最小的代价暴露最多的问题,同时监控也是必不可少的一步,需要拥有一定的监控手段来更加灵敏的发现问题。
- 思考更深一层、重视隐含信息:比如你发现了一个崩溃,但是你不能简单的只看这一个崩溃,要考虑这个崩溃是不是在其他地方也有同样或者类似的,如果有就考虑是否统一处理,今后该如何预防,总结经验。
- 长效保持需要科学流程:在项目的每一个阶段建立完善的相关规范,保证长效的优化效果。
在这里给大家免费分享一份《360°全方位Android性能优化解析》,这份学习手册将会带领大家一步一步深入探索Android的性能优化,让产品的性能从各个方面得到提升,希望大家喜欢。
这份资料一共有721页,4个大点,25个小章节,不仅仅有详细的底层原理的解析,还有专门的实践案例!文末直接领取
第一章 设计思想与代码质量优化
1.六大原则
- 单一职责原则
- 里氏替换原则
- 依赖倒转原则
- 接口隔离原则
- ……
2.设计模式
结构型模式:桥接模式、适配器模式、装饰器模式、代理模式、门面(外观)模式……
创建型模式:建造者模式、单例模式、抽象工厂模式、工厂方法模式……
数据结构:数组、栈、队列、链表、树……
算法:排序算法、查找算法……
第二章 程序性能优化
1.启动速度与执行效率优化
- 冷启动和热启动解析
- APP 启动黑白屏解决办法
- APP 卡顿问题分析及解决方案
- 启动速度与执行效率优化之 StrictMode
- ……
2.布局检测与优化
- 布局层级优化
- 过度渲染
- ……
3.内存优化
- 内存抖动和内存泄漏
- 内存大户
- Bitmap 内存优化
- Profile 内存监测工具
- Mat 大对象与泄漏检测
- 耗电优化
- 网络传输与数据存储优化网络传输与数据存储优化
- APK 大小优化
- 屏幕适配
- ……
4.耗电优化
- Doze&Standby
- Battery Historian
- JobScheduler
- WorkManager
5.网络传输与数据存储优化
- google 序列化工具 protobuf
- 7z 极限压缩
- ……
6.APK 大小优化
- APK 瘦身
- 微信资源混淆原理
- ……
7.屏幕适配
进行适配的原理
屏幕分辨率限定符与 smallestWidth 限定符适配原理
为什么选择 smallestWidth 限定符适配
怎么适配其他 module
常见问题处理
…
8.OOM 问题原理解析
- adj 内存管理机制
- JVM 内存回收机制与 GC 算法解析
- 生命周期相关问题总结
- Bitmap 压缩方案总结
- ……
9.ANR 问题解析
- AMS 系统时间调节原理
- 程序等待原理分析
- ANR 问题解决方案
- ……
10.Crash 监控方案
- Java 层监控方案
- Nativie 层监控方案
- ……
第三章 开发效率优化
1.分布式版本控制系统 Git
- 企业高效持续集成平台场景介绍
- GIT 分布式版本控制系统
- GIT 分支管理
- ……
2.自动化构建系统 Gradle:
- Gradle 与 Android 插件:gradle 与 android gradle 插件的关系、Gradle Transform API 的基本使用……
- Gradle Transform API 的基本使用:什么是 Transform、Transform 的使用场景、Transform API 学习、输入的类型……
- 自定义插件开发:Gradle 插件简介、开始准备、实践、自定义 Gradle 插件、buildSrc 模块方式……
- 插件实战:多渠道打包、发版自动钉钉……
边栏推荐
猜你喜欢
随机推荐
网络层协议介绍
web basic concepts
.net(四) 数据层实现
.net(二) 配置数据库
The Servlet,
【MySQL】mysql:解决[Err] 1093 - You can‘t specify target table ‘表名‘ for update in FROM clause问题
jdbctemplate连接sql server,代码中查出来的数据跟数据库中不一致,如何解决?
The MySQL database
.net(一)WebService创建
IP地址及子网划分
System transformation and subnetting
正则之re模块
scp上传文件到远程服务器
OpenHarmony轻智能产品开发直播笔记
Euclid and the game
Database MySQL installation and uninstallation
泛型和lambda表达式
Operator Overloading in Inheritance: A Legend of Input and Output
A watch - article HongMeng development practical experience
pragma comment的使用(转载)重新排版