Android Bitmap错误太重了

时间:2012-07-03 00:25:54

标签: android memory bitmap

我有一些问题,你们有些人必须知道我的Android应用程序:

  

3288字节的外部分配对于此过程来说太大了。

     

内存不足:堆大小= 5959KB,分配= 3922KB,位图大小= 18614KB

     

VM不会让我们分配3288字节

事实:

  • 我正在创建一个屏幕的位图(非常大),我操纵它(改变大小等......)进行翻页动画。

  • 它仅在HTC的欲望上崩溃:在星系s2和点燃火上,没有问题。

  • 每次使用以下代码创建新的Bitmap时,我都已经取消分配当前的Bitmap:

    Bitmap old = this.bitmap;

    this.bitmap = bitmap;
    this.invalidate();
    if(old != null)
        old.recycle();
    
  • 我也尝试过调用此函数:

    public void recycle(){         if(this.bitmap!= null)             this.bitmap.recycle();         的System.gc();         调用Runtime.getRuntime()GC();     }

我的代码中有好几次,有时它会稍微好一点(比如它稍后会崩溃),但这仍然不好。

  • 我花了很多时间来解决这个问题,我真的没有办法解决这个问题。就像在论坛上有很多错误的信息,所以我有点失落。

谢谢,要求更高的精确度。

编辑:

这是一个名为lot的代码:

//set the foreground image with the current day
                    Bitmap b = Bitmap.createBitmap(visibleLayout.getWidth(), visibleLayout.getHeight(),Bitmap.Config.ARGB_8888);
                    Canvas c = new Canvas(b);
                    visibleLayout.draw(c);

                    viewBitmapNext.setBitmap(b);

                    viewBitmapNext.setVisibility(View.VISIBLE);

其中viewBitmapNext是View类的重写元素。 setBitmap函数如上所述。

关于调整大小,我执行以下代码:

viewBitmapPrevious.setLayoutParams(new RelativeLayout.LayoutParams((int) (iterator - ((totalWidth - iterator) - activity.getResources().getDimension(R.dimen.margin_right))/2), RelativeLayout.LayoutParams.WRAP_CONTENT));

再次告诉我,如果你想了解更多。

1 个答案:

答案 0 :(得分:0)

我发现了什么问题。这对任何人来说都不会有用,因为这是一个与我的项目密切相关的愚蠢错误,但无论如何我都这么说。

我实际上有2个错误:

  • 无限创造元素的一个循环。
  • 在廉价手机上执行某项操作后,我把两张大图片作为背景(我还在上面,但应该很容易解决)。完成后我会编辑这个答案。

对于帮助我的每个人,你都找不到问题的解决方案(与我所做的位图屏幕无关),但它仍然有用。

感谢。