Android onSaveInstanceState()

Android開發(fā)中經(jīng)常會(huì)遇到這種情況:activity B啟用后位于activity A的前端,在某個(gè)時(shí)刻再返回activity A時(shí),該界面某些Intent傳參已經(jīng)被系統(tǒng)回收,從而可能導(dǎo)致參數(shù)調(diào)用失敗,甚至app奔潰。
此時(shí)可以通過(guò)onSaveInstanceState()保存其用戶界面狀態(tài)或者Intent參數(shù),使得將來(lái)用戶返回到activity A時(shí)能通過(guò)onCreate(Bundle)或者onRestoreInstanceState(Bundle)恢復(fù)界面的狀態(tài)或者Intent參數(shù)。
具體實(shí)例如下

//將bundle參數(shù)保存在outState中
  @Override
    protected void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        outState.putSerializable("house_detail", houseDetailModel);
    }
//onCreate時(shí)如果savedInstanceState中有值則取值
   @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        BarUtils.setDark(this);
        //該頁(yè)面閑置時(shí)間較久,houseDetailModel對(duì)象被回收,現(xiàn)將其保存至savedInstanceState
        if (savedInstanceState != null) {
            houseDetailModel = (HouseDetailModel) savedInstanceState.getSerializable("house_detail");
        } else {
            houseDetailModel = (HouseDetailModel) getIntent().getSerializableExtra("house_detail");
        }
        super.onCreate(savedInstanceState);
    }

測(cè)試:
1.將界面切至測(cè)試界面;
2.將app切換至后臺(tái)模式;
3.AndroidStudio Terminal輸入命令:adb shell am kill app包名
4.打開app

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容