在Android应用开发中,Activity是用户界面的主要载体,它是应用程序中用户可以直接交互的部分。了解Activity的生命周期对于创建高效、响应迅速且用户体验良好的应用至关重要。Activity的生命周期由一系列回调方法组成,这些方法会在Activity的不同状态之间被调用。

一、Activity生命周期概述

  1. 创建过程

  2. onCreate():当Activity首次创建时,系统会调用此方法。这是初始化Activity的最佳时机,如设置布局、数据绑定等。

  3. onStart()Activity变得可见但可能不完全在屏幕前方,用户可以感知到它的存在。

  4. onResume()Activity完全可见并与用户交互,成为栈顶的活动Activity

  5. 运行状态

  6. Activity处于onResume()状态时,它处于运行状态,可以接收用户的输入。

  7. 暂停与恢复

  8. onPause()Activity被部分或全部遮挡,但仍然可见。例如,弹出一个透明或半透明对话框时。

  9. onResume():当遮挡Activity的对话框关闭,Activity再次获得焦点时,系统会调用onResume()恢复。

  10. 停止与恢复

  11. onStop()Activity完全不可见,比如用户切换到另一个Activity。此时,Activity应该保存重要数据,因为系统可能会回收其资源。

  12. onRestart():如果已停止的Activity被重新激活,系统会先调用onRestart(),然后调用onStart()onResume()

  13. 销毁过程

  14. onDestroy()Activity即将被销毁,可能是用户退出或者系统需要释放资源。这是清理资源、解除绑定的最佳时机。

二、Activity的启动模式

  1. 标准模式(Standard):默认启动模式,每次启动Activity都会创建一个新的实例。

  2. 单实例模式(SingleInstance):在单独的任务栈中创建唯一的Activity实例,同一任务栈内不再创建新的实例。

  3. 单任务模式(SingleTask):创建Activity时,如果任务栈中已有该Activity的实例,则会回到这个实例,清除栈顶所有其他Activity

  4. 单栈顶模式(SingleTop):如果Activity已经在栈顶,新启动的请求会被忽略,否则创建新的Activity实例。

三、配置变更与生命周期

当设备配置(如屏幕方向、语言等)改变时,系统默认会销毁并重建Activity。开发者可以通过重写onSaveInstanceState(Bundle outState)来保存临时状态,onRestoreInstanceState(Bundle savedInstanceState)来恢复。

四、后台服务与前台服务

  • 后台服务:没有用户界面,可能会被系统随时杀死。

  • 前台服务:通过启动通知,让服务在前台运行,提高了生存能力。

五、返回栈管理

Android使用返回栈(Back Stack)管理Activity,新启动的Activity压入栈顶,用户点击后退键或调用finish()时,栈顶Activity被弹出。理解并熟练掌握Activity生命周期是Android开发的基础,它帮助开发者合理管理资源、优化用户体验。在实际项目中,根据需求选择合适的启动模式,妥善处理配置变更,以及合理使用服务,都是提高应用质量的关键。