View的状态是如何保存的

BaseSavedState是View的一个内部静态类,他实现了Parcelable接口,会把控件的属性(如selStart)序列化到Parcelable容器,这个内部类在View的onSaveInstanceState()方法里面以及onRestoreInstanceState(()方法里面都会被创建一个局部变量并保存数据。然后Activity的onSaveInstanceState、onRestoreInstanceState最终也会调用到控件的这两个同名方法。View的初始化时要调用setSaveEnabled(true) 。

另外,想要保存View的状态,需要在XML布局文件中提供一个唯一的ID(android:id),如果没有设置这个ID的话,View控件的onSaveInstanceState是不会被调用的。

最后:
用户显式关闭Activity的时候,例如用户按“返回键” 退出 Activity 时系统不会调用onSaveInstanceState。Activity类的onSaveInstanceState默认实现会恢复Activity的状态,会为布局中的每个View调用相应的 onSaveInstanceState()方法,让每个View都能保存自身的信息。

原创文章 118 获赞 149 访问量 9万+

猜你喜欢

转载自blog.csdn.net/haoyuegongzi/article/details/105808638