ActivityのonCreateで新しいActivityを起動したときのライフサイクル


05-26 00:19:22.680 3114-3114/com.lv.lifecycledemo E/MainActivity: onCreate
05-26 00:19:22.690 3114-3114/com.lv.lifecycledemo E/MainActivity: onStart
05-26 00:19:22.690 3114-3114/com.lv.lifecycledemo E/MainActivity: onResume
05-26 00:19:22.690 3114-3114/com.lv.lifecycledemo E/MainActivity: onPause
05-26 00:19:22.740 3114-3114/com.lv.lifecycledemo E/SecondActivity: onCreate
05-26 00:19:22.740 3114-3114/com.lv.lifecycledemo E/SecondActivity: onStart
05-26 00:19:22.740 3114-3114/com.lv.lifecycledemo E/SecondActivity: onResume
05-26 00:19:22.860 3114-3114/com.lv.lifecycledemo E/MainActivity: onSaveInstanceState
05-26 00:19:22.860 3114-3114/com.lv.lifecycledemo E/MainActivity: onStop

最初のActivityのonCreate、onStart、onResumeを完全に完了すると、onResumeが実行された後、ユーザーと対話する必要がないことがわかります(onCreateで新しいActivityが起動されているため)、最初のActivityのonPauseメソッドが実行されます.このコードは、Activity ThreadのhandleLaunchActivityメソッドで見つけることができる.
// ActivityThread
private void handleLaunchActivity(ActivityClientRecord r, Intent customIntent) {
    ...
    Activity a = performLaunchActivity(r, customIntent);
    if (a != null) {
        ...
        handleResumeActivity(r.token, false, r.isForward,
                !r.activity.mFinished && !r.startsNotResumed);
        if (!r.activity.mFinished && r.startsNotResumed) {
            try {
                r.activity.mCalled = false;
                mInstrumentation.callActivityOnPause(r.activity);
            }
            ...
        }
        ...
    }
    ...
}

最初のActivityが一時停止すると、2番目のActivityのonCreate、onStart、onResumeが実行されます.このとき,2番目のActivityが1番目を完全に隠すと,1番目のActivityが見えなくなるため,1番目のActivityのonSaveInstanceStateとonStopメソッドが呼び出される.(最初のActivityが見えなくなってシステムに回収されやすくなったので、onSaveInstanceStateメソッドを呼び出します.)onSaveInstanceStateの呼び出しタイミングについて、Android公式ドキュメントにこんな言葉があります.
Android calls onSaveInstanceState() before the activity becomes vulnerable to being destroyed by the system, but does not bother calling it when the instance is actually being destroyed by a user action (such as pressing the BACK key)
参考onSaveInstanceStateとonRestoreInstanceStateがトリガーされるタイミング