- 按 back 键,按 home 键,Activity 的生命周期是如何变化的
- 所有 Activity 都销毁了,那么应用进程也销毁了吗?
MainActivity 和 NetworkActivity。点击进入 MainActivity。
MainActivity: onCreate
MainActivity: onStart
MainActivity: onResume
从 MainActivity 点击进入 NetworkActivity。
MainActivity: onPause
NetworkActivity: onCreate
NetworkActivity: onStart
NetworkActivity: onResume
MainActivity: onStop
MainActivity: onSaveInstanceState
在 NetworkActivity 点击 back 键回到 MainActivity。
NetworkActivity: onPause
MainActivity: onRestart
MainActivity: onStart
MainActivity: onResume
NetworkActivity: onStop
NetworkActivity: onDestroy
在 MainActivity 点击 back 键回到手机桌面,再点击应用图标进入到 MainActivity
// 点击 back 键
MainActivity: onPause
MainActivity: onStop
MainActivity: onDestroy
// 再次点击应用图标进入 MainActivity
MainActivity: onCreate
MainActivity: onStart
MainActivity: onResume
在 MainActivity 点击 Home 键回到手机桌面,再点击应用图标进入 MainActivity
// 点击 Home 键
MainActivity: onPause
MainActivity: onStop
MainActivity: onSaveInstanceState
// 再次点击应用图标进入 MainActivity
MainActivity: onRestart
MainActivity: onStart
MainActivity: onResume
从上面的实验结果,可以得出以下结论:
- 从第一个 Activity 进入到第二个 Activity,第一个 Activity 的 onStop 总是在第二个 Activity 的 onResume 之后执行。所以要避免在第一个 Activity 的 onPause 方法中做耗时的操作。否则会影响第二个 Activity 界面的显示。
- 从第二个 Activity 点击 back 键回到第一个 Activity,也会先执行第二个 Activity 的 onPause 方法。所以无论是进入一个 Activity 或退出一个 Activity,都要避免在 onPause 方法中做耗时的操作。
- 点击 Back 键回到手机界面,当前 Activity 实例会被销毁,即执行 onDestroy 方法。
- 点击 Home 键回到手机界面,当前 Activity 执行的生命周期方法与从当前 Activity 进入到新一个 Activity 一样,都是:onPause onStop onSaveInstanceState
以上结论回答了第一个问题。第二个问题我目前还不清楚,还请各路大神不吝赐教!