十. 其它优化

一. 列表卡顿优化

常规方案
convertView复用、使用ViewHolder

耗时任务异步处理

布局相关
减少布局层级、避免过度绘制
异步inflate 或者 X2C

图片相关
避免过大尺寸:GC频繁、内存抖动
滑动时取消加载

线程相关
使用线程池收敛线程,降低线程优先级
避免UI线程时间片被抢占

TextView相关
原因:面对复杂文本性能不佳。
BoringLayout 单行、StaticLayout 多行
DynamicLayout 可编辑文本展示
TextView优化

展示类StaticLayout即可,性能优于DynamicLayout
异步创建StaticLayout
可直接使用 facebook/TextLayoutBuilder

其它
Systrace跟踪

注意字符串拼接
不要用 “+” 而是要用StringBuilder

二. 存储优化

常规方案
确保IO操作发生在非主线程

Hook或者AOP辅助

SharedPreferences相关
加载慢:初始化加载整个文件
全量写入:单词改动都会导致整体写入
卡顿:补偿策略导致。
替代方案:MMKV
mmap和文件锁保证数据完整
增量写入、使用Protocol Buffer
支持从 SharePreferences 迁移

日志存储优化
大量服务需要日志库支持
对于性能的要求:不影响性能、日志不丢失、安全
常规实现:
每产生一个日志,写一遍到磁盘中:不丢失、性能损耗
开辟一个内存buffer,先存buffer,再存文件:丢日志
mmap
内存映射文件

优势:高性能、不丢失
业界实现:XLog、Logan

其它
常用数据的缓存,避免多次读取
合理选择缓冲区 Buffer的大小:4-8KB

三. WebView异常监控

腾讯VasSonic:https://github.com/Tencent/VasSonic
重要控件

问题:性能与适配
容器预热、资源预加载
WebView版本及对接业务方众多

思路:
监控屏幕是否白屏,判断是否有问题。

你可能感兴趣的:(十. 其它优化)