在Activity 中,我们通常都是在:
protected void onCreate(Bundle savedInstanceState) {}
方法中加载activity的布局和初始化控件以及状态
如果一不小心 写成了:
@Override
public void onCreate(@Nullable Bundle savedInstanceState, @Nullable PersistableBundle persistentState) {
super.onCreate(savedInstanceState, persistentState);
}
然后去加载布局,会导致setContentView失效和一些不可控的问题
那么 这个onCreate(@Nullable Bundle savedInstanceState, @Nullable PersistableBundle persistentState)方法是干嘛的呢?
这个其实是针对 onCreate(Bundle savedInstanceState) 的方法进行了一次扩展
当我们的Activity屏幕旋转或者按下home以后,有几率触发我们的
@Override
protected void onSaveInstanceState(@NonNull Bundle outState) {} 方法
在这个方法里 我们可以保存我们的一些数据 比如id textView / Edittext 的值
然后onCreate中的 savedInstanceState 如果不为空 就可以取出这些数据
那么 :
@Override
public void onCreate(@Nullable Bundle savedInstanceState, @Nullable PersistableBundle persistentState) {
super.onCreate(savedInstanceState, persistentState);
}
和
@Override
public void onSaveInstanceState(@NonNull Bundle outState, @NonNull PersistableBundle outPersistentState) {
}
是配套使用的
他们针对 onCreate (Bundle save) 这个方法进行了扩展和持久化
PersistableBundle:
他实现了
Cloneable 以及 序列化
Parcelable的接口,目的就是讲数据持久化存储
当我们的activity 正在运行,当电量耗尽 关机 重启时 会调用这两个方法
需要在我们Manifest中的Activity节点 配置 android:persistableMode="persistAcrossReboots"