【发布时间】:2014-10-17 08:55:05
【问题描述】:
我正在 Xamarin 中开发一个 Android 应用程序。我在从字节流生成图像时遇到问题。 BitmapFactory(这似乎是最流行的解决方案)正在导致巨大的分配问题 - 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 库)编写应用程序。
对不起,糟糕的链接,但我还没有足够的信誉在这里上传图片:)
【问题讨论】:
-
请在帖子中包含您的代码,而不是链接到它的图片,链接将来可能会失效,这也会使帖子更难阅读。
-
嗨,我需要 10 或更多的声望,所以我现在做不到。我在这里完全是新手,所以我的声誉仍然是 1 :)
-
您可以在问题中发布文本,然后将其标记为代码,它将被正确格式化,这不需要任何信誉积分。
-
@TheaRasmussen 你想下载你的图片还是使用 Drawable 图片来显示????
-
感谢您的提示!如您所见,我正在将图像添加到 ImageView - 所以我想使用可绘制图像来显示。
标签: c# android bitmap xamarin bytearray