手记

APP内存优化

1、数据结构优化

频繁拼接字符串用StringBuilder(线程不安全,可变,比String高效,String不可变,每次赋值都是重新创建一个,StringBuffer线程安全,高效),用"+"的方式进行字符串拼接,会产生中间无用的内存块,频繁拼接就会消耗大量内存。

ArrayMap、SparseArray替换HashMap

内存抖动问题

再小的Class至少也要耗费0.5KB的内存

HashMap每一个Entry实体都需要额外占用32B的内存
2、对象复用(为了内存耗用小一点)

复用系统自带的资源

ListView/GridView/RecycalView适配器的ConvertView复用

避免在 onDraw()方法里面执行对象的创建(原因是:onDraw的图像界面,或者view,一有变动,就会重新的调用onDraw()方法,如果这个时候在里面创建对象的话,就会影响绘制时间,如果执行对象创建比较久,那会导致UI卡顿 ,运行就不流畅,而且onDraw()方法是频繁执行的,所以对象的创建也会频繁,效率就会比较低,一般来说把对象创建放在外面)

3、避免内存泄漏

内存泄漏会导致剩余的Heap越来越少,频繁触发GC回收垃圾

Activity是很容易泄漏的

用Application Context而不是Activity Context,Application是全局有效且一直存在着的,Activity是经常进入退出的,很容易造成内存泄漏问题

注意Cursor对象是否及时关闭,BitMap是否资源回收

3人推荐
随时随地看视频
慕课网APP