我的activity中调用了一张大图,在启动新的activity之后再返回原activity的时候,有时候会出现内存不足的异常,请教各位有没有好的处理办法?

解决方案 »

  1.   

    没有使用位图,使用的是原始的png图片,两张图片重叠在一起显示。图片的尺寸是2048*1533,开始是可以调用和替换的,替换多次后就会报内存不足的错误。源码程序比较复杂,主要部分如下:
         ImageView img = (ImageView) findViewById(R.id.img_front);
    try{
    img.setVisibility(View.GONE);
    img.setImageDrawable(getResources().getDrawable(R.drawable.blank));
         if (sClass.equals("A")){
         img.setImageDrawable(getResources().getDrawable(R.drawable.all_jl));
    }else if (sClass.equals("B")){
         img.setImageDrawable(getResources().getDrawable(R.drawable.hand_xj));
      }
    img.setVisibility(View.VISIBLE);
         }
         catch (OutOfMemoryError e) {
         Log.w("Memory", "Touch:createBitmapByScale OutOfMemoryError.", e);
         Toast.makeText(Touch.this, "显示内存不足,建议退出程序并重新选择!",Toast.LENGTH_SHORT).show();
         //TODO: out of memory deal..
         }没有Try之前就会崩溃,Try之后从这里就会捕获异常。
      

  2.   

    Drawable drawable = null;
    if (sClass.equals("A")){
       drawable = getResources().getDrawable(R.drawable.all_jl);
       img.setImageDrawable(drawable);
    }else if (sClass.equals("B")){
       drawable = getResources().getDrawable(R.drawable.hand_xj);
       img.setImageDrawable(drawable);
    }
    drawable = null;试试看
      

  3.   

    啊,这种问题,可以看下 预防Android内存泄露 ,你是真机还是模拟器,RAM多大的啊
      

  4.   

    内存不足这是 Android 加载大量图片的一个缺陷。一共加载多少就崩溃,这个临界值我还没有测试出来,但是如果你使用new bitmap的话,兆级别,甚至更小的图片就会导致崩溃。解决办法:1.放入数据库,放数据库的时候好像不能超过百K的数量级。
    2.裁剪缩小图片大小。关于其他的方法,网上有帖子说明解决实例的。把你LOG里的错误贴上去,搜搜。