【发布时间】:2011-12-23 19:19:50
【问题描述】:
我正在尝试找出在我的应用中处理照片的最大图像分辨率。 第一个版本已经上线,我已经收到了好几个OutOfMemoryError异常报告。
有没有办法确定可用内存,或者是否有其他策略可以找到在不同手机上处理图像的最佳解决方案(实际上是最大图像分辨率)?
【问题讨论】:
标签: android image-processing ram
我正在尝试找出在我的应用中处理照片的最大图像分辨率。 第一个版本已经上线,我已经收到了好几个OutOfMemoryError异常报告。
有没有办法确定可用内存,或者是否有其他策略可以找到在不同手机上处理图像的最佳解决方案(实际上是最大图像分辨率)?
【问题讨论】:
标签: android image-processing ram
您可以获得大约。使用活动管理器getMemoryClass() 方法对您的应用程序进行内存限制(以兆字节为单位):
ActivityManager am = (ActivityManager)getSystemService(Service.ACTIVITY_SERVICE);
int maxMemoryInMb = am.getMemoryClass();
您可以使用它并计算图像的最大尺寸,这当然取决于内部图像格式(请参阅Bitmap.Config)。
【讨论】:
System.gc() 等来指示垃圾收集器这是运行一些清理的好时机。但我相信需要多次运行 gc 才能完全释放位图。它只是 gc 的一个指示,所以这可能会被忽略。如果你有时间,看this google I/O session,已经有一段时间了,但我记得它有一些有用的细节。