本文共 2120 字,大约阅读时间需要 7 分钟。
Activity在Android系统中的生命周期是一个复杂但重要的概念,了解它能够帮助开发者更好地管理应用程序的状态。以下从多个角度详细解析Activity的生命周期。
1. Activity正常启动
当一个Activity首次启动时,其生命周期会经历以下几个关键阶段:
- onCreate:Activity被创建,这是最早被调用方法。开发者可以在这里初始化组件和布局。
- onStart:Activity准备好显示给用户,这个方法会在Activity首次呈现给用户时被调用。
- onResume:Activity进入可用状态,准备好处理用户输入和操作。
2. Activity启动另一个Activity
当一个Activity启动另一个Activity时,后台的Activity会暂停,新Activity则会进入前台。根据启动模式的不同,后台Activity的状态会有所差异:
(1)B完全遮挡住A
当B完全遮挡住A时,B的生命周期会与A存在交织:
- A会暂停(onPause)
- B开始创建(onCreate)
- B开始运行(onStart)
- B恢复状态(onResume)
- A保存当前状态(onSaveInstanceState)
- A停止运行(onStop)
- A销毁(onDestroy)
如果在此状态下按返回键,B会暂停(onPause),A会重新启动(onRestart),然后A继续运行(onStart、onResume),随后B会停止并销毁(onStop、onDestroy)。如果A长时间处于后台被系统杀死,则会重新调用onCreate开始新一轮的生命周期。
(2)B没有完全遮挡住A(如对话框或半透明界面)
这种情况下,B的生命周期会部分覆盖A:
- A暂停(onPause)
- B创建(onCreate)
- B启动(onStart)
- B恢复(onResume)
- A保存当前状态(onSaveInstanceState)
在这种模式下,按返回键会导致:
- B暂停(onPause)
- A恢复(onResume)
- B停止并销毁(onStop、onDestroy)
如果是按Home键返回,则会:
- B暂停(onPause)
- A保存状态(onSaveInstanceState)
- A停止(onStop)
- B销毁(onDestroy)
如果再次切换到前台,A会重新启动(onRestart),接着继续其生命周期(onStart、onResume),B也会重新启动(onRestart、onStart、onResume)。
3. 按返回键退出到桌面或调用finish销毁
当用户按返回键退出到桌面或调用finish时,Activity的生命周期会执行以下步骤:
- onPause:Activity进入暂停状态,停止处理后台任务。
- onStop:Activity完全停止运行。
- onDestroy:Activity销毁,释放资源。
4. 按Home键退出到桌面
当用户按Home键退出到桌面时,Activity的生命周期会执行:
- onPause:暂停运行。
- onSaveInstanceState:保存当前状态,以防止状态丢失。
- onStop:完全停止运行。
- onDestroy:销毁Activity。
5. Activity上有对话框时按Home键返回
如果Activity上有对话框(如AlertDialog),按Home键返回时,对话框的生命周期会影响整个Activity:
- onPause:Activity暂停运行。
- onSaveInstanceState:保存当前状态。
- onStop:停止运行。
- onDestroy:销毁Activity。
当对话框关闭后,切换回前台时,Activity会重新启动(onRestart),然后继续其生命周期。
6. 锁屏再开屏
当设备锁屏后再次开屏时,Activity的生命周期会经历:
- onPause:暂停运行。
- onSaveInstanceState:保存当前状态。
- onStop:停止运行。
- onRestart:重新启动。
- onStart:重新开始运行。
- onResume:恢复运行状态。
7. 展示屏幕旋转
屏幕旋转会导致Activity重新创建,以适应新的布局:
- onPause:暂停当前运行。
- onSaveInstanceState:保存当前状态。
- onStop:停止当前运行。
- onDestroy:销毁当前Activity。
- onCreate:新Activity创建。
- onStart:新Activity开始运行。
- onRestoreInstanceState:恢复保存的状态。
- onResume:新Activity恢复运行。
8. 下拉状态栏
下拉状态栏不会影响Activity的生命周期,状态栏操作是独立于Activity的。
Activity生命周期图(参考)
Activity的生命周期可以通过图示清晰地展示其各个阶段的转换。虽然图片无法直接显示,但可以通过上述详细描述来理解其动态过程。
通过对Activity生命周期的深入理解,开发者能够更好地管理应用程序的状态,提升用户体验和应用稳定性。
转载地址:http://ncpcz.baihongyu.com/