如何在android中检测Lowmemory?

Jam*_*mes 11 android

我的应用程序有很多图像,有时由于内存不足而导致崩溃.我写了这个在开发者网站上找到的函数.

public void onLowMemory(){

}
Run Code Online (Sandbox Code Playgroud)

但问题是在低内存情况下永远不会调用此函数.我该怎么做才能调用这个函数.我需要在设备内存不足时提醒用户.

Zso*_*any 9

onLowMemory()是不是一个很大的帮助,因为它得到仅在整个系统运行内存和时间称为中的情况下您的应用程序正在运行了它的可用堆空间.

所以我的答案是你不应该依赖onLowMemory()被调用.恕我直言,你的问题没有回调方法.

您可以定期轮询可用的堆空间,并检查是否内存不足.

Runtime.getRuntime().maxMemory();
Runtime.getRuntime().totalMemory();
Runtime.getRuntime().freeMemory();
Run Code Online (Sandbox Code Playgroud)


Kri*_*dra 0

我的应用程序有很多图像,有时会因内存不足而崩溃

这部分不清楚,如果您的应用程序从互联网下载任何图像或最终用户从图库中选择图像并添加它?在这种情况下

  • 您可以警告用户,为了添加新图像,他们必须移回一些已经选取的图像
  • 或者更好的是,您可以使用任何算法自己从内存中删除图像(最近最少使用/查看怎么样?)

    另一种情况是您的应用程序本身由于不需要的引用和泄漏而使用了太多内存。在这种情况下,您从未警告用户没有更多内存。有效使用内存只是您的责任...这种情况通常会出现主要是当

  • 您正在泄漏使用许多图像的视图/布局,在这种情况下,您必须找出泄漏并解决它。如果您使用的是 eclipse,请阅读有关MAT 的内容
  • 很少当图像尺寸太大时..这是设计师的错误..您可以使用几千字节大小的图像获得良好的外观和感觉...

无论如何,警告用户内存不足是不明智的。程序员在编程时应该始终认为可以通过使用更少的内存来使应用程序变得更好。

线程对于了解您的内存占用信息非常有用。

关于MAT工具的使用...