2011-12-23 88 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