首页 > 代码库 > 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内存优化的几种代码处理