android 应用程序生命周期的奇怪行为

Strange behavior of android application lifecycle

今天我试图在 eclipse 中模拟 Android 应用程序的低内存条件。但是我发现了一个奇怪的行为。让我描述一下场景。

Start an activity and call another activity by pressing a button from first activity. Now from Eclipse->DDMS->Devices click on "Stop process".

据我所知,none 回调从第二个 activity 调用,进程立即终止。之后 ActivityManager 启动了一个新进程,并创建了第一个 activity。

注意:第一个 activity = MainActivity.java 第二个是 AnotherActivity.java

02-24 09:01:04.740: I/ActivityManager(286): Process com.algopundit.lifecycle (pid 1378) has died.

02-24 09:01:04.740: W/ActivityManager(286): Force removing ActivityRecord{419fd8e8 u0 com.algopundit.lifecycle/.AnotherActivity}: app died, no saved state

02-24 09:01:04.752: I/WindowState(286): WIN DEATH: Window{41a418f0 u0 com.algopundit.lifecycle/com.algopundit.lifecycle.MainActivity}


02-24 09:01:05.090: I/ActivityManager(286): Start proc com.algopundit.lifecycle for activity com.algopundit.lifecycle/.MainActivity: pid=1412 uid=10053 gids={50053, 1028}


02-24 09:01:06.730: V/MainActivity(1412): onCreate

02-24 09:01:07.632: V/MainActivity(1412): onStart

02-24 09:01:07.632: V/MainActivity(1412): onRestoreInstanceState

02-24 09:01:07.660: V/MainActivity(1412): onResume

02-24 09:01:08.260: V/MainActivity(1412): onAttachedToWindow

我的疑问是,为什么连 AnotherActivity 的 onPause 都没有被调用,当 ActivityManager 重新创建进程时为什么没有重新创建 AnotherActivity?

好的,我得到答案了。在内存不足的情况下,如日志所述,系统终止了进程,并且当新进程启动时,它会尝试找到一个 activity,其操作为主要操作,类别为启动程序。这就是重新创建 MainActivity 的原因。