首页 > 代码库 > Android内存优化的几种代码处理
Android内存优化的几种代码处理
以下为Androi内存优化的几种代码处理,示例代码,仅供参考:
?1. 生成Bitmap:
InputStream is =this.getResources().openRawResource(R.drawable.pic1);
BitmapFactory.Options options=newBitmapFactory.Options();
options.inJustDecodeBounds = false;
options.inSampleSize = 10; //width,hight设为原来的十分一
Bitmap btp =BitmapFactory.decodeStream(is,null,options);
2.回收Bitmap:
if(!bmp.isRecycle() ){
bmp.recycle() //回收图片所占的内存
system.gc() //提醒系统及时回收
}
?调用recycle(),会开启一个线程去处理,具体什么时候回收只有系统知道。(属于建议 JVM 进行垃圾回收)
?这个就是为什么我们有的地方调用了它,那个地方还是会报oom的原因。
?但是有总归比没有好,它可以有效减少oom的概率。
回收资源
(1)//用来存放图片的缓存
HashMap<Integer, Bitmap>bitmapCache = new HashMap<Integer, Bitmap>();
//如果没有图片,或者已经存在
if(bitmapCache.isEmpty() || !AppConst.bitmapCache.containsKey(position)){
bitmapCache.put(position,bm);
}
(2)定义FreeBitmap函数,在activity结束的时候,调用FreeBitmap函数, 回收map中的资源
private void FreeBitmap(HashMap<Integer, Bitmap> cache){
if(cache.isEmpty()){
return;
}
for(Bitmap bitmap:cache.values()){
if(bitmap != null && !bitmap.isRecycled()){
bitmap.recycle();
}
}
cache.clear();
}
3.手动干预堆内存:
(1)增强程序堆内存的处理效率:
开发一些大型游戏或耗资源的应用时可考虑手动干涉GC处理,如程序onCreate时调用VMRuntime.getRuntime().setTargetHeapUtilization(0.75f);
(2)强行设置APP最小内存大小:
VMRuntime.getRuntime().setMinimumHeapSize(6* 1024* 1024); //设置最小heap内存为6MB大小
Android内存优化的几种代码处理