我的应用是在前台运行的后台服务。在内存不足的情况下,我的一些处理线程在没有重新启动应用程序的情况下被杀死。这引起了非常奇怪的行为。在我的进程被杀死之前,当内存不足时,我希望被操作系统警告。这将允许我释放内存或重新启动我的应用程序。我无法为这种情况找到广播或通知。
答案 0 :(得分:2)
在接收方接收此广播意图并处理该应用程序。
答案 1 :(得分:1)
我建议你阅读"管理应用程序的内存"在这里:https://developer.android.com/training/articles/memory.html。系统回调方法 onTrimMemory 将通知您不同的RAM使用情况,如方法参数的值所示。有关详细信息,请参阅https://developer.android.com/reference/android/content/ComponentCallbacks2.html#onTrimMemory(int)。该方法的描述如下:
当操作系统确定这是一个好时机时调用 用于从其进程中删除不需要的内存的进程。这将 例如,当它进入后台并且没有时发生 足够的内存来保持尽可能多的后台进程运行。 您永远不应该与级别的确切值进行比较,因为新的 可以添加中间值 - 您通常希望进行比较 如果该值大于或等于您感兴趣的级别。
要在任何时刻检索过程当前修剪级别,您可以使用 ActivityManager.getMyMemoryState(RunningAppProcessInfo)。
例如,TRIM_MEMORY_COMPLETE作为onTrimMemory的参数:
public static final int TRIM_MEMORY_COMPLETE等级 onTrimMemory (int):进程接近后台LRU列表的末尾,如果很快找到更多内存,它将会是 杀害。常数值:80(0x00000050)