今天看了鸿洋 的一遍优化文章,顿觉不记录下就不行
IO优化
小伙伴们在开发项目是时不时的遇到UI卡顿吗,大部分UI卡顿主要是因为在主线程操作IO导致的。
例如:经常使用SharePreference 导致概率性的卡顿。在微信等一线大厂中,早已放弃了SharePreference 作为键值对存储
小伙伴是不是感觉很惊奇,不用SharePreference 那用什么?
腾讯在去年开源了一个存储框架叫 MMKV。对,他就是用来做IO优化
接下来我们一起来看看两者在存储上的性能对比。
- mmkv的优势
- 速度优势:写入速度是SharedPreferences的100倍左右。在主线程做IO存储 用mmkv一点问题都没有,不会出现卡顿情况 特别是在数据量比较大的时候,速度会一直保持在10ms以内
- 写入安全:通过 mmap 内存映射文件,提供一段可供随时写入的内存块,App 只管往里面写数据,由操作系统负责将内存回写到文件,不必担心 crash 导致数据丢失。
- 写入优化:SharedPreferences在本身数据量比较多的情况下,更新一个key-value时,会发生全量写入,意味着时间更长。mmkv避免了这种情况的出现。mmkv以增量方式进行写入
- 功能更全:支持多进程访问,支持数据加密。多线程安全写入
图片压缩优化
目前Android手机摄像头动不动就是5M 8M,这样的图片比较大,既不利于传输,也不利于加载。并且在应用中加载图片,是一个需要消耗内存的一个动作。也是Android开发者在项目优化中比较头疼的一个问题。如果稍不注意图片加载,一不小心就会出现OOM
所以在项目中迫切需要对图片进行压缩优化,方便后续加载,传输,编辑
- 同等质量下,压缩后的文件对比
这种效果,通过原生的bitmap.compress() 是做不到的
目前有一种另外一种实现 ,叫做鲁班压缩
接下来看看鲁班压缩的效果
现在很多的互联网公司面试的时候对面试者都看重是否具备调优的经验,互联网公司日渐复杂的App,错综复杂的性能调优,都对 Android 工程师的技术广度和技术深度提出了更高的要求,所以性能调优也是不可缺少的一项技能!
还有很多的优化内容要补充 。。。。