onLowMemory如何在android上运行?

Anu*_*ani 13 android

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

例如.

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

现在假设我们从活动A - >活动B - >活动C开始,在活动C上我们耗尽内存.我的问题是那之后会发生什么?

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

此外,我相信活动A和B将被杀死(因为它们是后台活动),但在这些活动被杀之前,它们各自onLowMemory()被召唤?

Yon*_*ong 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.
Run Code Online (Sandbox Code Playgroud)


Suj*_*jit 2

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

调用此函数的确切时间点尚未定义,通常它会在所有后台进程被终止时发生,即在达到终止我们希望避免终止的托管服务和前台 UI 的进程之前。

  • 后台活动的onLowMemory函数会被调用吗?或者只是前景/可见活动 (2认同)