在Android开发中,Activity是应用程序的主要组件之一,它代表应用程序中的一个屏幕或界面。当用户与应用程序进行交互时,Activity会根据用户的操作而启动、暂停、恢复或停止等,这些状态变化被称为Activity的生命周期。
Activity的生命周期包括以下几个状态:
1. Created:Activity对象被创建,但尚未可见。在这个状态下,Activity还没有与用户进行交互,不能响应用户的操作。
2. Started:Activity已经可见,但尚未获得用户的焦点。在这个状态下,Activity已经显示在屏幕上,但用户还不能与其进行交互。
3. Resumed:Activity已经显示在屏幕上,并且获得了用户的焦点。在这个状态下,Activity已经准备好接受用户的输入,并可以响应用户的操作。
4. Paused:Activity失去了用户的焦点,但仍然可见。在这个状态下,Activity仍然在屏幕上显示,但用户正在与其他组件进行交互。
5. Stopped:Activity被完全遮盖或停止,不再可见。在这个状态下,Activity已经不再显示在屏幕上,可能被其他Activity覆盖或被系统停止。
6. Destroyed:Activity被销毁,释放了系统资源。在这个状态下,Activity对象已经被销毁,无法再被使用。
除了这些状态之外,Activity还有一些回调方法,可以在状态变化时进行处理,这些方法包括:
- onCreate():Activity对象被创建时调用。
- onStart():Activity变为可见状态时调用。
- onResume():Activity获得用户焦点时调用。
- onPause():Activity失去用户焦点时调用。
- onStop():Activity不再可见时调用。
- onDestroy():Activity被销毁时调用。
通过这些回调方法,开发者可以在Activity的不同状态下进行相应的操作,以提供更好的用户体验。
这个图片我相信大家在好多地方都应该见过。
如果想深刻理解Activity之间相互切换时的周期还是得在这几个方法中研究,我的建议是可以在每个方法中打印日志,然后操作客户端进行观察状态。
-
onCreate():Activity对象被创建时调用。在这个方法中,开发者可以进行一些初始化操作,例如设置布局、绑定控件、初始化数据等。此外,还可以通过调用setContentView()方法来设置Activity的布局。
-
onStart():Activity变为可见状态时调用。在这个方法中,开发者可以执行一些需要在Activity可见时才能执行的操作,例如开始动画、启动服务等。此时,Activity虽然已经可见,但并没有获得用户焦点。
-
onResume():Activity获得用户焦点时调用。在这个方法中,开发者可以执行一些需要在Activity获得用户焦点时才能执行的操作,例如启动定时器、开始播放音乐等。此时,Activity已经准备好接受用户的输入。
-
onPause():Activity失去用户焦点时调用。在这个方法中,开发者可以执行一些需要在Activity失去用户焦点时才能执行的操作,例如停止动画、暂停音乐播放等。此时,Activity仍然可见,但已经不能接受用户的输入。
-
onStop():Activity不再可见时调用。在这个方法中,开发者可以执行一些需要在Activity不再可见时才能执行的操作,例如释放资源、停止服务等。此时,Activity已经不再显示在屏幕上,可能被其他Activity覆盖或被系统停止。
-
onDestroy():Activity被销毁时调用。在这个方法中,开发者可以执行一些需要在Activity被销毁时才能执行的操作,例如释放资源、取消注册广播接收器等。此时,Activity对象已经被销毁,无法再被使用。
说通俗点,其中1和7,相对应,2和5相对应,3和4相对应,2,5所表示的阶段是存在,但是在后台看不见,而3,4所表示的是在前台正在显示。
当用户开始离开 Activity 时,系统会调用方法来销毁该 Activity。在某些情况下,此销毁只是部分销毁;Activity 仍然驻留在内存中(例如当用户切换至另一应用时),并且仍然可以返回到前台。如果用户返回到该 Activity,Activity 会从用户离开时的位置继续运行。
系统终止给定进程及其中 Activity 的可能性取决于当时 Activity 的状态。
根据 Activity 的复杂程度,您可能不需要实现所有生命周期方法。但是,请务必了解每个方法,并实现能够确保应用按用户预期方式运行的方法,这非常重要。