Activity 之间跳转时,生命周期的变化
两个 Activity 之间跳转时,各自的生命周期变化
【A → B】
当在 Activity A 里面激活 Activity B,A 会调用 onPause()方法,然后 B 调用 onCreate(),onStart(),onResume()。这个时候 B 覆盖了 A 的窗体,A 会调用 onStop()方法。
如果 B 是个透明的窗口,或者是对话框的样式,就不会调用 A 的 onStop()方法。
【A → B → A】
A 的启动模式为 Standard:由于 A 不在栈顶,在 Standard 启动模式下,A 还是会被重复创建,即依然调用 onCreate 方法
【A → B → B】B 的启动模式为 Standard
B 在 Standard 启动模式下,还是会被重复创建,即依然调用自身的 onCreate 方法
【A → B → B】B 为 singleTop 或 singleTask 启动模式
B 先 onPause,然后 onResume
【A → B → A】
A → B 的生命周期见第一条。B 点击返回,再次回到 A 时,B 调用 onPause 方法,A 被重启,调用 onRestart 方法,然后 onStart、onResume,B 被覆盖后,B 调用 onStop、onDestory。
拓展
涉及第三个 Activity 时的生命周期变化:
A(非透明)跳转到 B(透明),从 B 中再跳转到 C(非透明),三者的生命周期调用:
值得注意的点:C 覆盖住 A 和 B 后,先执行 A 的 onStop 方法,再执行 B 的。
那么从 C 按 back 键后,三者的生命周期:
可见也是先进行 A 的变化(由于 A 不在前台生存期,所以不会调用 onResume),在 A、B 都显示完成后,调用 C 的 onStop 和 onDestroy。
版权声明: 本文为 InfoQ 作者【W🌥】的原创文章。
原文链接:【http://xie.infoq.cn/article/3e5169874842ef6de2e0673e2】。文章转载请联系作者。
评论