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 的原因。
今天我试图在 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 的原因。