如何解決Can not perform this action after onSaveInstanceState

如何解決Can not perform this action after onSaveInstanceState

先分析問題發(fā)生原因


private void checkStateLoss() {

    if (isStateSaved()) {

        throw new IllegalStateException(

        "Can not perform this action after onSaveInstanceState");

    }

}

public boolean isStateSaved() {

    // See saveAllState() for the explanation of this.  We do this for

    // all platform versions, to keep our behavior more consistent between

    // them.

    return mStateSaved ||mStopped;

}

通過分析源碼我們找到,當(dāng)activity執(zhí)行了onSaveInstanceState或onStop方法后,操作子fragment系統(tǒng)會(huì)檢測(cè)當(dāng)前狀態(tài)并拋出異常。

解決方法:

配合Lifecycle,我們只需要重寫添加:


lifecycleScope?.launchWhenResumed{

    //show fragment dialog

}

這樣系統(tǒng)會(huì)自動(dòng)在resumed后再?gòu)棾鰀ialogfragment,也能避免Can not perform this action after onSaveInstanceState
這樣即使是activity在后臺(tái)情況下返回前臺(tái),也會(huì)立即彈窗。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容