onLowMemory如何在android上运行?

时间:2011-09-09 10:11:30

标签: android

我想知道如何执行onLowMemory()函数

例如。

假设我有3个活动,每个活动都覆盖了onLowMemory()个函数,以清理RAM中的数据。我还有一个Application类,它也会覆盖onLowMemory()来清理一些全局状态数据。

现在我们假设我们从活动A开始 - >活动B - >活动C和活动C我们的内存不足。我的问题是那之后会发生什么?

根据我的理解,将调用Activity C和Application类的onLowMemory()函数,我是否正确?活动A和B的onLowMemory()函数是否被调用?

此外,我认为活动A和B将被杀死(因为它们是后台活动),但在这些活动被杀之前,他们各自的onLowMemory()会被调用吗?

3 个答案:

答案 0 :(得分:5)

当手机内存不足时,后台进程将被框架杀死。如果最后一个后台进程被终止,框架将调用每个应用程序的onLowMemory。

源代码中对此进行了描述。请参阅:https://github.com/android/platform_frameworks_base/blob/master/services/java/com/android/server/am/ActivityManagerService.java#L3088

  // If there are no longer any background processes running,
  // and the app that died was not running instrumentation,
  // then tell everyone we are now low on memory.

答案 1 :(得分:2)

根据文件 http://developer.android.com/reference/android/app/Application.html#onLowMemory%28%29

没有定义调用它的确切点,通常它会在所有后台进程被杀死的时候发生,也就是在达到我们想要避免的托管服务和前台UI的查杀点之前杀伤。

答案 2 :(得分:2)

谷歌在他们的一个视频中谈到了这个功能:

http://www.youtube.com/watch?v=gbQb1PVjfqM&feature=player_embedded#t=682s

然而,我认为现在仍然不清楚何时调用这样的方法,并且它是否可以帮助避免我们的应用程序因为拥有大量进程而被杀死而且我们需要大量内存。

相关问题