Activity跳转生命周期

94 阅读2分钟

在Android开发中,当从Activity A跳转到Activity B时,并且两个Activity都在同一个任务(Task)中。以下是这两个Activity的生命周期变化:

Activity A 的生命周期变化:

  1. onPause():Activity A不再处于前台,用户不再与其交互,Activity A仍然可见,但已经开始进入“暂停”状态。 如果Activity A回到前台(例如,用户通过多任务视图选择Activity A), 则系统将调用onResume()方法,而不会调用onStart()

  2. onStop():Activity A不再可见,可能完全被另一个Activity覆盖。 当Activity A重新可见时,系统会调用onRestart()方法,接着是onStart()onResume()方法。

注意,如果Activity A在onPause()之后立即被销毁(比如因为配置变更或内存不足),则可能不会调用onStop()。但是,在这个场景中,我们假设只是简单的Activity跳转,不涉及这些情况。

Activity B 的生命周期变化:

  1. onCreate(Bundle savedInstanceState):当Activity B第一次被创建时调用,需要初始化Activity比如加载布局。

  2. onStart():Activity B对用户可见了。如果Activity A是之前可见的Activity,则此时Activity A会调用onStop()方法。

  3. onResume():Activity B处于前台,可以开始与用户进行交互。此时,Activity B是处于“运行”状态。

如果Activity B是从后台(例如,用户按了Home键或启动了另一个应用)返回到前台,则它会依次调用onRestart()(如果Activity B之前被停止过)、onStart()onResume()方法。

总结起来,从Activity A跳转到Activity B,Activity A会经历onPause()onStop()生命周期回调, 而Activity B则会经历onCreate(Bundle savedInstanceState)onStart()onResume()生命周期回调。 这些回调为开发者提供了在不同状态下进行资源管理和UI更新的机会。