2011-12-23 92 views
0

的處理/存儲能力了我試圖找出我的應用程序處理的照片,最大的圖像分辨率。 它的第一個版本已經在線了,我已經有了幾個OutOfMemoryError異常報告。找出手機

有沒有一種方法,以確定可用的內存,或者是有一些其他的策略尋找不同的手機處理圖像的最佳解決方案(其實最大圖像分辨率)?

回答

1

你可以得到你的約。通過使用活動經理getMemoryClass()方法爲您的應用程序(以MB爲單位)內存限制:

ActivityManager am = (ActivityManager)getSystemService(Service.ACTIVITY_SERVICE); 
int maxMemoryInMb = am.getMemoryClass(); 

您可以使用和calucate圖像(S)的最大尺寸,這依賴於內部的圖像格式當然(見Bitmap.Config

+0

非常感謝。有沒有辦法立即釋放位圖對象的內存,所以我可以確定在每個時間點只有使用的對象消耗內存? – stoefln 2011-12-23 19:34:59

+0

我想用「可能」來回答這個問題。我從來沒有寫過需要這種內存管理的應用程序。當然你可以調用'System.gc()'等來指示垃圾收集器,這是運行一些清理的好時機。但我相信有多個gc run需要完全釋放一個位圖。這只是gc的一個指示,所以這可能被忽略。如果您有一些時間,請觀看[此Google的I/O會話](http://www.google.com/events/io/2011/sessions/memory-management-for-android-apps.html),它已成爲雖然,但我記得它有一些有用的細節。 – 2011-12-23 19:40:02