Activity状态更改
1、配置发生了更改
当配置发生更改时,Activity 会被销毁并重新创建。原始 Activity 实例将触发 onPause()、onStop() 和 onDestroy() 回调。系统将创建新的 Activity 实例,并触发 onCreate()、onStart() 和 onResume() 回调。
结合使用 ViewModels、onSaveInstanceState() 方法和/或持久性本地存储,可使 Activity 的界面状态在配置发生更改后保持不变。
2、用户点击返回按钮
如果 Activity 位于前台,并且用户点按了返回按钮,Activity 将依次经历 onPause()、onStop() 和 onDestroy() 回调。活动不仅会被销毁,还会从返回堆栈中移除。
但是在这种情况下,默认不会触发 onSaveInstanceState() 回调。不过,可以通过替换 onBackPressed() 方法实现某种自定义行为。同时要调用super.onBackPressed()。
3、系统终止应用进程
如果系统因系统限制(例如配置变更或内存压力)而销毁 Activity,虽然实际的 Activity 实例会消失,但系统会记住它曾经存在过。如果用户尝试回退到该 Activity,系统将使用一组描述 Activity 销毁时状态的已保存数据新建该 Activity 的实例。
系统用于恢复先前状态的已保存数据称为实例状态,是存储在 Bundle 对象中的键值对集合。默认情况下,系统使用 Bundle 实例状态来保存 Activity 布局中每个 View 对象的相关信息(例如在 EditText 微件中输入的文本值)。这样,如果Activity 实例被销毁并重新创建,布局状态便会恢复为其先前的状态。