我有一些问题,你们有些人必须知道我的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));
再次告诉我,如果你想了解更多。
答案 0 :(得分:0)
我发现了什么问题。这对任何人来说都不会有用,因为这是一个与我的项目密切相关的愚蠢错误,但无论如何我都这么说。
我实际上有2个错误:
对于帮助我的每个人,你都找不到问题的解决方案(与我所做的位图屏幕无关),但它仍然有用。
感谢。