性能优化系列课
2021-11-25 23:35:50 30 举报
AI智能生成
动脑学院性能优化系列课
作者其他创作
大纲/内容
ANR
什么是ANR
ANR原理
Service 超时机制
Broadcast 超时机制
ContentProvider 超时机制
Input 超时机制
ANR 超时阈值
前台与后台服务的区别
前台与后台广播超时
前台与后台ANR
ANR 分析
ANR 线上监控
WatchDog
FileObserver
电量优化
优化方案
减少操作
推迟操作
合并操作
系统电量方案
Doze低电耗模式
Standby待机模式
白名单
WorkManager
电量分析工具
BatteryHistorian
Energy Profiler
网络优化
DNS优化
HttpDNS
连接优化
keep-alive
HTTP2
数据压缩优化
protobuf
gzip
Crash 监控
Java Crash 监控
Native Crash 监控
BreakPad
minidump_stackwalk
addr2line
包体积优化
APK 结构
Android Size Analyzer
移除未使用资源
启用资源缩减
使用Lint分析器
一键删除无用资源
移除未使用的备用资源
动态库打包配置
使用矢量图
轻量级存储优化
SharedPreferences
MMKV
Jetpack DataStore
Preferences Datastore
Proto Datastore
内存优化
JVM虚拟机
内存分析
为什么要分析应用的内存
Android Profiler
会话
内存性能分析器
捕获堆转储
Retained Size
Retained Size
将堆转储另存为 HPROF 文件
强制执行垃圾回收
跟踪内存分配
内存性能分析器中的泄漏检测
MAT(Memory Analyzer Tool)
Histogram
内存快照对比
内存抖动
原因
危害
内存泄漏
原因与危害
常见内存泄漏场景
单例
静态变量
非静态内部类
未取消注册或回调
Timer和TimerTask
集合中的对象未清理
资源未关闭或释放
属性动画
WebView
LeakCanary 内存泄漏检测
初始化
运行步骤
核心原理
检测对象类型
ReferenceQueue 与 WeakReference
手写实现 LeakCanary 核心流程
内存溢出
单个应用可用的最大内存
导致OOM的常见原因
JVMTI
重新定义类
跟踪对象分配和垃圾回收过程
遵循对象的引用树,遍历堆中的所有对象
检查 Java 调用堆栈
暂停(和恢复)所有线程
ART TI
加载或连接代理
API
抖音内存监控框架(Kenzo)
mmap 内存映射
Linux文件系统
Cache Page与Read/Write操作
内存映射原理
图片优化
质量压缩
Bitmap.compress()
尺寸压缩
inJustDecodeBounds
inSampleSize
无损压缩
libjpeg
启动优化
应用启动流程
启动状态
冷启动
热启动
温启动
启动耗时统计
系统日志统计
adb命令统计
2-5-8原则
CPU Profile
通过应用插桩生成跟踪日志
异步加载布局
黑白屏问题
StrictMode
IdleHandler
使用方式
源码解析
使用场景
卡顿优化
刷新率
Systrace
安装
使用
CPU Profile
卡顿监控
Looper日志检测卡顿
BlockCanary 核心原理实现
VSYNC信号监听
Choreographer.FrameCallback
UI优化
层级优化
Layout Inspector
选择视图
隔离视图
隐藏布局边框和视图标签
将应用布局与参考图像叠加层进行比较
实时布局检查器
3D 可视化
布局验证
Pixel Devices
自定义
色盲
字体大小
merge 标签
ViewStub 延迟加载
过度渲染
移除布局中不需要的背景
视图层次结构扁平化
减少透明度的使用
0 条评论
下一页