アクティビティを書き換えた場合の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における活動の本当のスタートは、呼び出し元プロセスの前をスキップすることを知っています
プライベートアクティビティ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>。