解决方案 »

  1.   

    InputStream is = this.getResources().openRawResource(R.drawable.pic1); 
         BitmapFactory.Options options=new BitmapFactory.Options(); 
       options.inJustDecodeBounds = false; 
         options.inSampleSize = 2;   //width,hight设为原来的二分一 
        Bitmap btp =BitmapFactory.decodeStream(is,null,options); 
    if(!bmp.isRecycle() ){ 
           bmp.recycle()   //回收图片所占的内存 
           system.gc()  //提醒系统及时回收 
      

  2.   

    imageloader库https://github.com/nostra13/Android-Universal-Image-Loader
      

  3.   

    只能压缩和及时回收释放内存,捕获oom,Imageloader是下载显示图片,它对oom的处理不一定是你想要的.
      

  4.   

    有个imageLoader的框架,实在不行你可以压缩一下图片。不过这样会比较耗费机能。。自己权衡吧
      

  5.   

    1、在onDestroy中做内存回收处理如1楼所说。没看到code里面有回收的处理,每次启动都加载20张图片,图片一般都很大,多启动几次就OOM了。想要进一步优化就需要使用工具把发生OOM时候应用的堆栈保存下来分析。
    if(!bmp.isRecycle() ){ 
           bmp.recycle()   //回收图片所占的内存 
           system.gc()  //提醒系统及时回收 

    2、如果内存正确回收还是有OOM问题就真的需要像4楼说的压缩图片了。