一、為什么要介紹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 一個參數的方法,為什么還要弄一個兩個參數的方法。他們的區別是什么,怎么才可以提現出他們的差異