一、为什么要介绍PersistableBundle?
在sdk版本>=21 开发中,有时候因为码代码经常使用快捷键,很容易就把onCreatef方法打错
看这两个方法
第一种:
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
第二种:
@Override
public void onCreate(@Nullable Bundle savedInstanceState, @Nullable PersistableBundle persistentState) {
super.onCreate(savedInstanceState, persistentState);
}
当Activity直接使用第二种方法的时候,界面显示为空白的界面,有时候需要花很长时间才能找到问题,我自己也遇到过好几次这样事,介绍这个纯粹就是给自己一个深刻影响
二、什么是PersistableBundle?
这在API 21 新出的一个属性,它是可以将Activity数据持久化保存,使用的时候必须在Mainfest设置activity数据
android:persistableMode="persistAcrossReboots"
三、哪些地方存在PersistableBundle?
在Activity 中有三个方法存在PersistableBundle
-onCreate()方法
-onSaveInstanceState()方法
-onRestoreInstanceState()方法
四、PersistableBundle 怎么使用?
数据保存
@Override
public void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState) {
outPersistentState.putString("key", "value");
super.onSaveInstanceState(outState, outPersistentState);
}
数据提取
@Override
public void onRestoreInstanceState(Bundle savedInstanceState, PersistableBundle persistentState) {
super.onRestoreInstanceState(savedInstanceState, persistentState);
if (persistentState != null) {
String value = persistentState.getString("key");
}
}
五、其他问题
没怎么弄明白有了onSaveInstanceState 一个参数的方法,为什么还要弄一个两个参数的方法。他们的区别是什么,怎么才可以提现出他们的差异