2010-04-10 51 views
0

我正在开发一个简单的应用程序,它可以进行一点点的图像处理。它分为两项活动;主要是一些显示元件,第二种是用来拍摄手机相机的图像。 描述我的问题:我启动应用程序,捕获图像(通过以子活动启动新的Intent),并且所有数据都正确显示。如果我抓住这之后的另一个形象,我在第二次启动子活动会导致java.lang.OutOfMemoryError

java.lang.OutOfMemoryError运行 - 位大小超过VM预算

我不存储捕获的位图,在第二个活动我只是从中提取了一些数据和将它传递给主要活动;完成(完成())之后的子活动。我真的不知道我能做些什么。提前致谢!

问候,Zacherl

PS:这是我第一次到Android的办法,所以我对我做任何愚蠢的错误初学者道歉;如果有人需要更多信息,我会很乐意提供。

+0

我通过分配一个永久布尔数组来解决这个问题(请参阅第一个回答的评论);我可以这样做,因为图片大小永远不会改变。 感谢您花时间在这件事上! – Zacherl 2010-04-17 12:35:39

回答

0

你可能想看看这个线程: Android memory allocation

你没有得到大量的内存一起工作,所以你很可能会没有足够的加载2倍大相机的图像到内存与一切。

+0

谢谢你的快速回答!关键是,我不能缩小图像,因为那样我会丢失大部分包含的数据。 更准确地说:我将整个图像临时存储在一个布尔数组中,我用它来提取数据,然后在那一步之后,我返回数据(一个HashSet有10到40个原始值)。我不认为HashSet消耗了太多的空间,所以我担心在方法结束后,VM的GC没有释放布尔数组使用的空间。 我解释了我自己吗? – Zacherl 2010-04-11 08:52:11

相关问题