android中是否存在任何事件或方法来检查内存是否低?

时间:2011-01-20 14:21:04

标签: android

朋友,

任何人都指导我,如果在android中有任何有用的退出事件,知道我的android应用程序是否在低内存中运行?

实际上,我正在缓存许多对象,所以我想知道一个中心位置或区域,如果内存不足,我可以释放它们。

任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:11)

与@bigstones所说的相反,onLowMemory()并不完全符合您的预期。我对此调用的理解是,仅当系统内存不足并且要求应用程序释放额外内存时才会达到此调用。当系统有足够的内存但你的应用程序已达到内存限制时,永远不会调用onLowMemory()

尝试/捕获OutOfMemory异常也是一个坏主意。如果您想了解自己应用的内存使用情况,最好的方法是通过ActivityManager class,即getMemoryClass()getProcessMemoryInfo()方法。

另外,您应该阅读this SO answer(来自Android工程师),它以更详细的方式解释了进程内存的使用。

答案 1 :(得分:2)

是的,请参阅onLowMemory(),活动和其他人实现此目的。

编辑:这实际上是错误的,应用程序方面。请参阅Nik Reiman's answer

答案 2 :(得分:1)

OnLowMemory()仅在系统内存不足时才被调用,因此您可以在解码图像之前实现以下方法来检查可用内存。

Runtime.getRuntime().maxMemory();
Runtime.getRuntime().totalMemory();
Runtime.getRuntime().freeMemory();