我正在Xamarin中开发一个Android应用程序。我在从字节流生成图像时遇到问题。 BitmapFactory(这似乎是最流行的解决方案),导致巨大的分配问题 - 增长堆。BitmapFactory.DecodeByteArray导致Grow Heap(碎片情况)
ConnectToDb connect = new ConnectToDb();
byte[] arr = connect.SelectImgByte(3,"Thea");
BitmapFactory.Options options=new BitmapFactory.Options();
options.InJustDecodeBounds = true;
bmp = BitmapFactory.DecodeByteArray (arr, 0, arr.Length/*,options*/);
_imageView.SetImageBitmap (bmp);
上面是调用BitmapFactory.DecodeByteArray的方法。它工作正常,图像显示。但速度很慢,导致这些“警告”。
Thread started: <Thread Pool> #6
[dalvikvm-heap] Grow heap (frag case) to 22.596MB for 1997584-byte allocation
[Choreographer] Skipped 129 frames! The application may be doing too much work on its main thread.
[dalvikvm-heap] Grow heap (frag case) to 20.755MB for 1997584-byte allocation
[dalvikvm-heap] Grow heap (frag case) to 22.735MB for 1997584-byte allocation
[dalvikvm-heap] Grow heap (frag case) to 24.710MB for 1997584-byte allocation
对于每次调用该方法,Grow Heap错误都会出现。正如你所看到的,我已经将图像加载到imageview 4次了。 所以,我想知道是否有人有和我一样的问题?我试了很多个小时来解决这个问题,通过在这里寻找(和其他地方),但我找不到解决方案。 请记住,我正在使用Xamarin编写应用程序(c#语言 - 使用Android库)。
对不起,糟糕的链接,但我没有足够的名气上传图片来呢:)
请在发布您的代码,而不是链接到它的照片,这些链接可能会在未来死去这也使得更难以阅读。 – 2014-10-17 09:00:05
嗨,我需要10个或更多的声誉,所以我现在不能这样做。我在这里是一个新手,所以我的声望仍然是1 :) – 2014-10-17 09:07:25
你可以在你的问题中发表文字,然后将其标记为代码,并且它将被正确格式化,这不需要任何声望点。 – 2014-10-17 09:09:13