Activityライフサイクルと起動モード

2216 ワード

Activityのライフサイクル:
onCreate onStart onResume onPause onStop onDestroy

onStartの時にActivityはすでに見えていましたが、まだフロントに現れておらず、ユーザーと対話することができず、onResumeの時に表示され、ユーザーと対話することができます.
ライフサイクルの切り替え:
  • 初回起動:onCreate -> onStart -> onResume
  • 新しいActivityを開くか、デスクトップに切り替えます:onPause -> onStop新しいActivityが透明なトピックを使用している場合、現在のActivityはonStop
  • を呼び出すことはありません.
  • ユーザーが元のActivity:onRestart -> onStart -> onResume
  • に戻ると
  • ユーザがbackキーを押すと:onPause -> onStop -> onDestroy
  • onStartとonResumeとonPauseとonStopは記述からあまり差がなく,実際の開発での実質的な違いはonStartとonStopがActivityが見えるかどうかの観点からコールバックし,onResumeとonPauseがActivityがフロントにあるかどうかの観点からコールバックすることである.
    縦横画面切り替え時のライフサイクル(異常時のライフサイクル):デフォルトでは、Activityが特別な処理をしない場合、システム構成が変更されるとActivityは破棄され、再作成されます.onSaveInstanceStateメソッドとonRestoreInstanceStateメソッドが呼び出され、データの保存と復元が行われます.1つのケース:Activityを再作成しない場合は、リストファイルにconfigChangesプロパティを設定してorientationという値を追加できます.この場合、onCreateメソッドは呼び出されません.
    Activityの起動モード:4種類の起動モード:
    standard singleTop singleTask singleInstance
    

    Standardはデフォルトの起動モードであり、マルチインスタンスモードであるため、ApplicationContextでstandardモードのActivityを起動すると、Activityタイプ以外のContextにはいわゆるタスクスタックがないため、エラーが発生することに注意してください.
    singleTopはスタックトップ多重モードであり、Activityがタスクスタックのスタックトップにある場合、onNewIntentメソッドが呼び出されると再作成されません.また、onCreateメソッドとonStartメソッドは変更されていないため呼び出されません.ABCD,Aがスタックの底にあると仮定し,このときDを再起動すると,ABCDのままである.
    singleTaskはスタック内多重モードであり、Activityが1つのスタックに存在する限りインスタンスを再作成しない単一のモードであり、singleTopとともにスタックトップであり、1つはスタック全体であると理解できる.onNewIntentメソッドも呼び出されます.具体的には、Activity Aのように、システムはまずAが存在するかどうかを検索し、存在しない場合は、まずタスクスタックを作成し、Aをインスタンス化して入れ、存在する場合は、タスクスタックにAのインスタンスが存在するかどうかを見て、存在する場合はAをスタックのトップに調整してonNewIntentメソッドを呼び出し、存在しない場合はAのインスタンスを作成してスタックに押し込む.
  • スタックS 1の場合はABCであり、Dに必要なスタックがS 2である場合はS 2を作成し、Dをインスタンス化してS 2
  • に押し込む必要がある
  • スタックS 1の場合はABCであり、Dに必要なスタックがS 1であれば、Dを直接インスタンス化してS 1
  • に押し込むシステムである
  • スタックS 1の場合はADBCであり、Dに必要なスタックはS 1である.この場合、多重化の原則に従ってDはインスタンス化されず、Dをスタックトップに調整し、onNewIntentメソッドを呼び出し、BCをクリアする.これはスタック内の状況がAD
  • になる
    singleInstanceは、強化されたsingleTopモードであると理解できる.singleTopモードがあるので特徴的です.強化された点は、Aが起動すると、システムがこのスタックを破棄しない限り、タスクスタックを作成し、Aをこのスタックに単独で使用することであり、後続の要求は新しいAを作成しません.