Activity组件生命周期|青训营笔记

107 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的第2天

什么是Activity

在应用程序中用户所能看到的界面,也是开发中最常用到的组件,该界面下有可以由多个控件组成,而用户是利用这些控件与应用进行交互。

Activity生命周期

Activity生命周期执行流程

image.png

  • 记录两个Activity之间切换时生命周期变化
    打开第一个Activity时 image.png 切换到第二个Activity image.png 第二个Activity返回到第一个Activity image.png 退出第一个Activity image.png

Activity生命周期中的其他回调方法

onSaveInStanceState():在Activity非正常关闭时回调,用于保存数据、但不支持持久化数据。
onRestoreInstanceState():当Activity重建时回调,用于恢复数据 onConfigrationChanged(): 当界面配置发生改变,而不重建。
onPostCreate():如果两个Activity共享同一个布局,可以在另外的Activity中重写该回调方法,来给相同控件添加不同的设置(包括:内容、事件等)。

当Activity配置改变时回调 存在两种情况(AndroidManifest.xml中当前Activity组件节点是否配置了configChange属性)
configChanged部分属性值:

  • local:语言改变
  • fontScale:字体大小改变
  • orientation:屏幕旋转
  • keybordHidden:键盘显示隐藏

image.png 1.当未配置configChange属性
配置改变 Acivity销毁:
onSaveInstanceState()调用,可以利用参数中Bundle outState对象使用键值对(key——value)的方式 存储想保留的数据。


@Override
protected void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
}

image.png Activity重建:
可以使用onRestoreInstanceState()/onCreate()方法通过参数中的Bundle savedInstanceState对象通过相应的key获取到之前Activity销毁时存储的数据。

@Override
protected void onRestoreInstanceState(@NonNull Bundle savedInstanceState) {
    super.onRestoreInstanceState(savedInstanceState);
}

image.png 注意点

当创建Activity时可以看到onCreate()方法中同样有Bundle savedInstanceState对象,通过该对象也可以获取到相应的数据,onRestoreInstanceState()方法的设计,是为了避免Activity跳转时而没有被销毁,然后不调用onCreate()方法。

2.已经配置configChange属性
当配置改变: 重写ConfigurationChanged() 着不会因为配置改变而Activity被销毁 image.png