【问题标题】:Find out processing/memory capabillities of phone找出手机的处理/记忆能力
【发布时间】:2011-12-23 19:19:50
【问题描述】:

我正在尝试找出在我的应用中处理照片的最大图像分辨率。 第一个版本已经上线,我已经收到了好几个OutOfMemoryError异常报告。

有没有办法确定可用内存,或者是否有其他策略可以找到在不同手机上处理图像的最佳解决方案(实际上是最大图像分辨率)?

【问题讨论】:

    标签: android image-processing ram


    【解决方案1】:

    您可以获得大约。使用活动管理器getMemoryClass() 方法对您的应用程序进行内存限制(以兆字节为单位)

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

    您可以使用它并计算图像的最大尺寸,这当然取决于内部图像格式(请参阅Bitmap.Config

    【讨论】:

    • 谢谢-好点。有什么方法可以立即释放位图对象的内存,这样我就可以确定在每个时间点只有使用过的对象在消耗内存?
    • 我想用“也许”来回答这个问题。我从来没有写过需要这种内存管理的应用程序。当然,您可以调用System.gc() 等来指示垃圾收集器这是运行一些清理的好时机。但我相信需要多次运行 gc 才能完全释放位图。它只是 gc 的一个指示,所以这可能会被忽略。如果你有时间,看this google I/O session,已经有一段时间了,但我记得它有一些有用的细节。
    猜你喜欢
    • 2011-03-23
    • 2018-01-18
    • 1970-01-01
    • 2022-12-15
    • 2017-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多