onCreateレイアウトをロードしません

アクティビティを書き換えた場合のonCreate(@NullableバンドルsavedInstanceState、@Nullable PersistableBundle persistentState)代わりのonCreate(@NullableバンドルsavedInstanceState)

その後の活動は、レイアウトをロードしません

onCreate(@NullableバンドルsavedInstanceState)のonCreate(@NullableバンドルsavedInstanceState、@Nullable PersistableBundle persistentState)(API 21)実際に呼び出すため

出典:

    公共 ボイドのonCreate(@NullableバンドルsavedInstanceState、
            @Nullable PersistableBundle persistentState){ 
        のonCreate(savedInstanceState)。
    }

 

プロセスを理解するために始めた活動は、我々はActivityThreadにおける活動の本当のスタートは、呼び出し元プロセスの前をスキップすることを知っています

ActivityThread performLaunchActivityメソッドの呼び出し方法callActivityOnCreate方法計装クラスは、今度は、のonCreateメソッドTargetActivityを呼び出します。
プライベートアクティビティperformLaunchActivity(ActivityClientRecordのR、意図customIntent){ 
... 
アクティビティ活性 = NULL ; 
アクティビティ = mInstrumentation.newActivity(CL、component.getClassName()、r.intent)。               
...... 
もし(r.isPersistable()){ 
     mInstrumentation.callActivityOnCreate(活性、r.state、r.persistentState)。
} { 
     mInstrumentation.callActivityOnCreate(活性r.state)。
} 
... 
}

計装クラスソースメソッドcallActivityOnCreate方法を次のように

公共ボイドcallActivityOnCreate(アクティビティ活性、バンドルつらら){ 
        prePerformCreate(活性)。
        activity.performCreate(つらら)。
        postPerformCreate(活性)。
    }

  

persistentStateは(つらら、persistentState)のonCreateトリガーに空でないときのコールActivity.performCreateは、次の。

 / ** @hide * / 
    @VisibleForTesting 
    公共 最終ActivityThread getActivityThread(){
         戻りmMainThread。
    } 

    最終 ボイドperformCreate(バンドルつらら){ 
        performCreate(つらら、NULL ); 
    } 

    最終 ボイドperformCreate(バンドルつらら、PersistableBundle persistentState){ 
        mCanEnterPictureInPicture = 
        restoreHasCurrentPermissionRequest(つらら)。
        もし(!persistentState = ヌル){ 
            のonCreate(つらら、persistentState)。
        }{ 
            のonCreate(つらら)。
        } 
        writeEventLog(LOG_AM_ON_CREATE_CALLED、 "performCreate" )。
        mActivityTransitionState.readState(つらら)。

        mVisibleFromClient =!。mWindow.getWindowStyle()getBoolean(
                com.android.internal.R.styleable.Window_windowNoDisplay、); 
        mFragments.dispatchActivityCreated(); 
        mActivityTransitionState.setEnterActivityOptions(この、getActivityOptions())。
    }

PS:persistentState注釈付きシャットダウンまたはアクティビティの前にパワーダウンした場合、データはPersistableBundle onSaveInstanceStateに保存することができ、という効果を、以下のように

活動は再び再作成されたとき時のonCreate(@NullableバンドルsavedInstanceState、@Nullable PersistableBundle persistentState)により、復旧サイト。

公共ボイドonSaveInstanceState(バンドルoutState、PersistableBundle outPersistentState){ 
onSaveInstanceState(outState)。
}


活性は後に再初期化されている場合
*は以前にシャットダウンしているか、電源がオフし、このバンドルは、それがほとんどのデータ含ま
*最近{@link #onSaveInstanceState}でoutPersistentStateに供給します。
* <B> <I>注:それ以外の場合はnullです。</ I> </ B>。

おすすめ

転載: www.cnblogs.com/yjpjy/p/12066455.html