2010-04-10 94 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

相關問題