我有一个展示Android.Graphics.Bitmap
列表的视图模型(如果有更好的东西,请告诉我,谢谢)。
所以实际上,图像数据将从某个服务中获取(表示为字节),然后字节将转换为Android.Graphics.Bitmap
- 我没有测试这种情况,看是否有任何问题。现在正在开发(在客户端)进程,我想只使用1个示例图像资源添加到drawable
文件夹。如果公开一些资源ID列表以帮助显示图像,一切都很好。然而,公开的内容是Android.Graphics.Bitmap
列表,我尝试使用BitmapFactory.DecodeResource
方法将添加的图片资源ID转换为位图,如下所示:
//in the context of some Activity
var images = new List<Bitmap>();
for(var i = 0; i < 30; i++){
var bm = BitmapFactory.DecodeResource(Resources, Resource.Drawable.SampleImage);
images.Add(bm);
}
上面的代码会抛出一个OutOfMemoryException
(在var bm...
行)。
我只是Android编程的初学者,所以解决这个问题对我来说真的很难。例外情况很明显,看起来内存有限,但我不想减少图像大小,分辨率或某些东西使代码运行(因为如果通过资源ID显示图像,一切都很好,图像在不降低质量的情况下显示它应该是什么样的。)
我认为java开发人员也可以帮忙解决这个问题,这里是java中的代码:
//don't need to add the bitmap to any list, just like this will
//throw the exception
for(int i = 0; i < 30; i++){
Bitmap bm = BitmapFactory.decodeResource(getResources(), R.drawable.sampleImage);
//...
}
感谢您的帮助!
更新
根据我的深度调试,在第20个循环(i = 19)抛出异常。我使用的设备也是一个模拟器(适用于Android的Visual Studio模拟器),也许是模拟器的某种限制。我不确定它对于实际的物理设备会是怎样的。但我可以在模拟器中运行许多应用程序(甚至是3D游戏),所以看起来仿真器就好了。