这是我参与「第四届青训营 」笔记创作活动的第2天
什么是Activity
在应用程序中用户所能看到的界面,也是开发中最常用到的组件,该界面下有可以由多个控件组成,而用户是利用这些控件与应用进行交互。
Activity生命周期
Activity生命周期执行流程
- 记录两个Activity之间切换时生命周期变化
打开第一个Activity时切换到第二个Activity
第二个Activity返回到第一个Activity
退出第一个Activity
Activity生命周期中的其他回调方法
onSaveInStanceState():在Activity非正常关闭时回调,用于保存数据、但不支持持久化数据。
onRestoreInstanceState():当Activity重建时回调,用于恢复数据 onConfigrationChanged(): 当界面配置发生改变,而不重建。
onPostCreate():如果两个Activity共享同一个布局,可以在另外的Activity中重写该回调方法,来给相同控件添加不同的设置(包括:内容、事件等)。
当Activity配置改变时回调
存在两种情况(AndroidManifest.xml中当前Activity组件节点是否配置了configChange属性)
configChanged部分属性值:
- local:语言改变
- fontScale:字体大小改变
- orientation:屏幕旋转
- keybordHidden:键盘显示隐藏
1.当未配置configChange属性
配置改变 Acivity销毁:
onSaveInstanceState()调用,可以利用参数中Bundle outState对象使用键值对(key——value)的方式
存储想保留的数据。
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
}
Activity重建:
可以使用onRestoreInstanceState()/onCreate()方法通过参数中的Bundle savedInstanceState对象通过相应的key获取到之前Activity销毁时存储的数据。
@Override
protected void onRestoreInstanceState(@NonNull Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
}
注意点
当创建Activity时可以看到onCreate()方法中同样有Bundle savedInstanceState对象,通过该对象也可以获取到相应的数据,onRestoreInstanceState()方法的设计,是为了避免Activity跳转时而没有被销毁,然后不调用onCreate()方法。
2.已经配置configChange属性
当配置改变:
重写ConfigurationChanged() 着不会因为配置改变而Activity被销毁