Android 了解手机的处理/存储能力
我正在尝试找出在我的应用程序中处理照片的最大图像分辨率。 它的第一个版本已经上线了,我已经收到了几个OutOfMemoryError异常报告Android 了解手机的处理/存储能力,android,image-processing,ram,Android,Image Processing,Ram,我正在尝试找出在我的应用程序中处理照片的最大图像分辨率。 它的第一个版本已经上线了,我已经收到了几个OutOfMemoryError异常报告 是否有办法确定可用内存,或者是否有其他策略来找到在不同手机上处理图像的最佳解决方案(实际上是最大图像分辨率)?您可以使用“活动管理器”方法获得应用程序的大致内存限制(以兆字节为单位): 您可以使用它并计算图像的最大大小,这当然取决于内部图像格式(请参阅)。谢谢-好的观点。有没有什么方法可以立即释放位图对象的内存,这样我就可以确保在每个时间点,只有使用过的对
是否有办法确定可用内存,或者是否有其他策略来找到在不同手机上处理图像的最佳解决方案(实际上是最大图像分辨率)?您可以使用“活动管理器”方法获得应用程序的大致内存限制(以兆字节为单位):
您可以使用它并计算图像的最大大小,这当然取决于内部图像格式(请参阅)。谢谢-好的观点。有没有什么方法可以立即释放位图对象的内存,这样我就可以确保在每个时间点,只有使用过的对象在消耗内存?我想用“可能”来回答这个问题。我从未编写过需要这种内存管理的应用程序。当然,您可以调用
System.gc()
之类的函数来指示垃圾收集器现在是运行一些清理的好时机。但我相信,完全释放位图需要多次gc运行。这只是gc的一个指示,所以这可能会被忽略。如果你有时间的话,看看,已经有一段时间了,但我记得它有一些有用的细节。
ActivityManager am = (ActivityManager)getSystemService(Service.ACTIVITY_SERVICE);
int maxMemoryInMb = am.getMemoryClass();