如何在android中检测内存压力,内存回收攻击性或OOM杀死级别?

时间:2017-07-28 15:37:39

标签: android

我正在编写一个内存占用大约1GB的应用程序。 该应用程序在具有4GB内存的设备上运行良好,但在内存小于3GB的设备上,它将触发积极的内存回收,有时会触发OOM杀手并降低系统级用户体验,(例如,需要很长时间才能返回到系统级别)以前的应用程序,背景中的音乐播放器被杀死。)

我想知道是否可以查询系统内存状态并相应地调整我的应用的内存使用情况,例如:在系统即将杀死ActivityManager.RunningAppProcessInfo.IMPORTANCE_SERVICE级别的进程之前,保守地使用内存。

这可能吗?

1 个答案:

答案 0 :(得分:1)

首先,您可能想要对您的应用进行分析,以确定您确实需要不断分配的内存:

然后你有onTrimMemory()回调(API 14+),你可以用来在设备缺少时释放一些资源:

  

当操作系统确定这是一个好时机时调用   用于从其进程中删除不需要的内存的进程。这将   例如,当它进入后台并且没有时发生   足够的内存,以保持尽可能多的后台进程运行。