Acticity起動モードをコードで理解する

126440 ワード

本章の内容

  • Activityの4種類の起動モードの理論知識
  • コード理解
  • Activityの4種類の起動モードの理論知識


    standard
    デフォルトモードでは、書き込みなしで構成できます.このモードでは、デフォルトで新しいインスタンスが作成されます.したがって、このモードでは、同じインスタンスが複数存在してもよいし、同じActivityが複数存在してもよい.
    singleTop
    アクティビティの開始モードがsingleTopと指定する、アクティビティの開始時にスタックに戻るスタックトップが既にアクティビティであることが判明した場合、それを直接使用することができると考える、新しいアクティビティインスタンスは作成されず、スタックトップでない場合、再びインスタンスが作成される.
    singleTask
    起動モードがsingleTaskのActivityのオブジェクトは、Activityスタック全体に1つしか存在しません.また、再起動すると、インスタンスの上のすべてのActivityオブジェクトが空になり、抽象的な感じがします.第2の部分はコードで明確に表現されます.
    singleInstance
    1つのインスタンスのみが存在し、このインスタンスは独立して1つのtaskで実行されます.このtaskはこのインスタンスのみであり、他のActivityの存在は許可されず、ジャンプ上の論理的な問題を引き起こします.これは処理しなければなりません.

    コード理解


    コードの準備
    AndroidManifest.xml
     <application  android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme">
            <activity android:name=".MainActivity">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
    
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
            <activity  android:name=".A" android:launchMode="singleTop" />
            <activity  android:name=".B" android:launchMode="singleInstance" />
            <activity  android:name=".C" android:launchMode="singleTask"></activity>
        </application>

    ここではMainAcitivyの起動モードは構成されていませんが、その起動モードはデフォルトのstandardです.次のすべてのActivityの画面は、このButtonごとにそれぞれのアルファベットの先頭に対応するActivityです.
    まず簡単なジャンプ、ロールバックから始め、ボタンごとに3回クリックします.

    連点M,MainActivity–standard

    05-21 11:47:21.654 18600-18600/cjh.lauchmode D/tag-M--standard: tag-M--standard- onPause
    05-21 11:47:21.664 18600-18600/cjh.lauchmode D/tag-M--standard: tag-M--standard- onCreate
    05-21 11:47:21.674 18600-18600/cjh.lauchmode D/tag-M--standard: tag-M--standard- onstart
    05-21 11:47:21.674 18600-18600/cjh.lauchmode D/tag-M--standard: tag-M--standard- onResume
    05-21 11:47:22.054 18600-18600/cjh.lauchmode D/tag-M--standard: tag-M--standard- onStop
    05-21 11:47:22.934 18600-18600/cjh.lauchmode D/tag-M--standard: tag-M--standard- onPause
    05-21 11:47:22.944 18600-18600/cjh.lauchmode D/tag-M--standard: tag-M--standard- onCreate
    05-21 11:47:22.954 18600-18600/cjh.lauchmode D/tag-M--standard: tag-M--standard- onstart
    05-21 11:47:22.954 18600-18600/cjh.lauchmode D/tag-M--standard: tag-M--standard- onResume
    05-21 11:47:23.334 18600-18600/cjh.lauchmode D/tag-M--standard: tag-M--standard- onStop
    05-21 11:47:24.494 18600-18600/cjh.lauchmode D/tag-M--standard: tag-M--standard- onPause
    05-21 11:47:24.494 18600-18600/cjh.lauchmode D/tag-M--standard: tag-M--standard- onCreate
    05-21 11:47:24.514 18600-18600/cjh.lauchmode D/tag-M--standard: tag-M--standard- onstart
    05-21 11:47:24.514 18600-18600/cjh.lauchmode D/tag-M--standard: tag-M--standard- onResume
    05-21 11:47:24.884 18600-18600/cjh.lauchmode D/tag-M--standard: tag-M--standard- onStop

    私のMainActivityはLAUNCHERなので、冒頭のonpause、onstopがあって、見ることができます
    05-21 11:47:21.664 18600-18600/cjh.lauchmode D/tag-M--standard: tag-M--standard- onCreate
    05-21 11:47:21.674 18600-18600/cjh.lauchmode D/tag-M--standard: tag-M--standard- onstart
    05-21 11:47:21.674 18600-18600/cjh.lauchmode D/tag-M--standard: tag-M--standard- onResume

    この3つのログは3回出力され、3つのMainActivityがオンになり、Activityスタックにはすでに4つのMainActivityが存在し、必然的に終了するとonDestroyは4回実行されます
    05-21 11:50:18.894 18600-18600/cjh.lauchmode D/tag-M--standard: tag-M--standard- onPause
    05-21 11:50:18.904 18600-18600/cjh.lauchmode D/tag-M--standard: tag-M--standard- onRestart
    05-21 11:50:18.904 18600-18600/cjh.lauchmode D/tag-M--standard: tag-M--standard- onstart
    05-21 11:50:18.904 18600-18600/cjh.lauchmode D/tag-M--standard: tag-M--standard- onResume
    05-21 11:50:19.284 18600-18600/cjh.lauchmode D/tag-M--standard: tag-M--standard- onStop
    05-21 11:50:19.284 18600-18600/cjh.lauchmode D/tag-M--standard: tag-M--standard- onDestroy
    05-21 11:50:24.514 18600-18600/cjh.lauchmode D/tag-M--standard: tag-M--standard- onPause
    05-21 11:50:24.524 18600-18600/cjh.lauchmode D/tag-M--standard: tag-M--standard- onRestart
    05-21 11:50:24.524 18600-18600/cjh.lauchmode D/tag-M--standard: tag-M--standard- onstart
    05-21 11:50:24.524 18600-18600/cjh.lauchmode D/tag-M--standard: tag-M--standard- onResume
    05-21 11:50:24.904 18600-18600/cjh.lauchmode D/tag-M--standard: tag-M--standard- onStop
    05-21 11:50:24.904 18600-18600/cjh.lauchmode D/tag-M--standard: tag-M--standard- onDestroy
    05-21 11:50:26.074 18600-18600/cjh.lauchmode D/tag-M--standard: tag-M--standard- onPause
    05-21 11:50:26.084 18600-18600/cjh.lauchmode D/tag-M--standard: tag-M--standard- onRestart
    05-21 11:50:26.084 18600-18600/cjh.lauchmode D/tag-M--standard: tag-M--standard- onstart
    05-21 11:50:26.084 18600-18600/cjh.lauchmode D/tag-M--standard: tag-M--standard- onResume
    05-21 11:50:26.454 18600-18600/cjh.lauchmode D/tag-M--standard: tag-M--standard- onStop
    05-21 11:50:26.454 18600-18600/cjh.lauchmode D/tag-M--standard: tag-M--standard- onDestroy
    05-21 11:50:27.564 18600-18600/cjh.lauchmode D/tag-M--standard: tag-M--standard- onPause
    05-21 11:50:27.974 18600-18600/cjh.lauchmode D/tag-M--standard: tag-M--standard- onStop
    05-21 11:50:27.974 18600-18600/cjh.lauchmode D/tag-M--standard: tag-M--standard- onDestroy

    連点B,BActivity–singleInstance

    05-21 11:53:44.224 18600-18600/cjh.lauchmode D/tag-M--standard: tag-M--standard- onPause
    05-21 11:53:44.284 18600-18600/cjh.lauchmode D/tag-B--singleInstance: tag-B--singleInstance- onCreate
    05-21 11:53:44.294 18600-18600/cjh.lauchmode D/tag-B--singleInstance: tag-B--singleInstance- onstart
    05-21 11:53:44.294 18600-18600/cjh.lauchmode D/tag-B--singleInstance: tag-B--singleInstance- onResume
    05-21 11:53:44.604 18600-18600/cjh.lauchmode D/tag-M--standard: tag-M--standard- onStop
    05-21 11:53:46.884 18600-18600/cjh.lauchmode D/tag-B--singleInstance: tag-B--singleInstance- onPause
    05-21 11:53:46.884 18600-18600/cjh.lauchmode D/tag-B--singleInstance: tag-B--singleInstance- onResume
    05-21 11:53:47.864 18600-18600/cjh.lauchmode D/tag-B--singleInstance: tag-B--singleInstance- onPause
    05-21 11:53:47.864 18600-18600/cjh.lauchmode D/tag-B--singleInstance: tag-B--singleInstance- onResume

    理論的に言うように、BActivityをジャンプして生成されたスタックは、Bのインスタンスが1つしか存在せず、log出力では確かに1回しか出力されません.
    05-21 11:53:44.284 18600-18600/cjh.lauchmode D/tag-B--singleInstance: tag-B--singleInstance- onCreate
    05-21 11:53:44.294 18600-18600/cjh.lauchmode D/tag-B--singleInstance: tag-B--singleInstance- onstart

    その後の出力は
    05-21 11:53:47.864 18600-18600/cjh.lauchmode D/tag-B--singleInstance: tag-B--singleInstance- onPause
    05-21 11:53:47.864 18600-18600/cjh.lauchmode D/tag-B--singleInstance: tag-B--singleInstance- onResume

    前に言ったように、このモードはジャンプロジックに異常があります.今回のクリックの順序はA-C-B-Mです.
    05-21 12:09:43.374 28588-28588/cjh.lauchmode D/tag-M--standard: tag-M--standard- onPause
    05-21 12:09:43.374 28588-28588/cjh.lauchmode D/tag-A--singleTop: tag-A--singleTop- onCreate
    05-21 12:09:43.384 28588-28588/cjh.lauchmode D/tag-A--singleTop: tag-A--singleTop- onstart
    05-21 12:09:43.384 28588-28588/cjh.lauchmode D/tag-A--singleTop: tag-A--singleTop- onResume
    05-21 12:09:43.784 28588-28588/cjh.lauchmode D/tag-M--standard: tag-M--standard- onStop
    05-21 12:09:49.394 28588-28588/cjh.lauchmode D/tag-A--singleTop: tag-A--singleTop- onPause
    05-21 12:09:49.414 28588-28588/cjh.lauchmode D/tag-C--singleTask: tag-C--singleTask- onCreate
    05-21 12:09:49.424 28588-28588/cjh.lauchmode D/tag-C--singleTask: tag-C--singleTask- onstart
    05-21 12:09:49.424 28588-28588/cjh.lauchmode D/tag-C--singleTask: tag-C--singleTask- onResume
    05-21 12:09:49.814 28588-28588/cjh.lauchmode D/tag-A--singleTop: tag-A--singleTop- onStop
    05-21 12:09:51.384 28588-28588/cjh.lauchmode D/tag-C--singleTask: tag-C--singleTask- onPause
    05-21 12:09:51.434 28588-28588/cjh.lauchmode D/tag-B--singleInstance: tag-B--singleInstance- onCreate
    05-21 12:09:51.444 28588-28588/cjh.lauchmode D/tag-B--singleInstance: tag-B--singleInstance- onstart
    05-21 12:09:51.444 28588-28588/cjh.lauchmode D/tag-B--singleInstance: tag-B--singleInstance- onResume
    05-21 12:09:51.734 28588-28588/cjh.lauchmode D/tag-C--singleTask: tag-C--singleTask- onStop
    05-21 12:09:55.584 28588-28588/cjh.lauchmode D/tag-B--singleInstance: tag-B--singleInstance- onPause
    05-21 12:09:55.594 28588-28588/cjh.lauchmode D/tag-M--standard: tag-M--standard- onCreate
    05-21 12:09:55.604 28588-28588/cjh.lauchmode D/tag-M--standard: tag-M--standard- onstart
    05-21 12:09:55.604 28588-28588/cjh.lauchmode D/tag-M--standard: tag-M--standard- onResume
    05-21 12:09:55.994 28588-28588/cjh.lauchmode D/tag-B--singleInstance: tag-B--singleInstance- onStop

    通常の論理では、返される順序はM-C-B-Aであるべきですが、実際には本当の順序はM-C-A-Bです.
    05-21 12:13:05.944 28588-28588/cjh.lauchmode D/tag-M--standard: tag-M--standard- onPause
    05-21 12:13:05.954 28588-28588/cjh.lauchmode D/tag-C--singleTask: tag-C--singleTask- onRestart
    05-21 12:13:05.954 28588-28588/cjh.lauchmode D/tag-C--singleTask: tag-C--singleTask- onstart
    05-21 12:13:05.954 28588-28588/cjh.lauchmode D/tag-C--singleTask: tag-C--singleTask- onResume
    05-21 12:13:06.344 28588-28588/cjh.lauchmode D/tag-M--standard: tag-M--standard- onStop
    05-21 12:13:06.354 28588-28588/cjh.lauchmode D/tag-M--standard: tag-M--standard- onDestroy
    05-21 12:13:06.924 28588-28588/cjh.lauchmode D/tag-C--singleTask: tag-C--singleTask- onPause
    05-21 12:13:06.934 28588-28588/cjh.lauchmode D/tag-A--singleTop: tag-A--singleTop- onRestart
    05-21 12:13:06.934 28588-28588/cjh.lauchmode D/tag-A--singleTop: tag-A--singleTop- onstart
    05-21 12:13:06.934 28588-28588/cjh.lauchmode D/tag-A--singleTop: tag-A--singleTop- onResume
    05-21 12:13:07.314 28588-28588/cjh.lauchmode D/tag-C--singleTask: tag-C--singleTask- onStop
    05-21 12:13:07.314 28588-28588/cjh.lauchmode D/tag-C--singleTask: tag-C--singleTask- onDestroy
    05-21 12:13:08.644 28588-28588/cjh.lauchmode D/tag-A--singleTop: tag-A--singleTop- onPause
    05-21 12:13:08.654 28588-28588/cjh.lauchmode D/tag-M--standard: tag-M--standard- onRestart
    05-21 12:13:08.654 28588-28588/cjh.lauchmode D/tag-M--standard: tag-M--standard- onstart
    05-21 12:13:08.654 28588-28588/cjh.lauchmode D/tag-M--standard: tag-M--standard- onResume
    05-21 12:13:09.034 28588-28588/cjh.lauchmode D/tag-A--singleTop: tag-A--singleTop- onStop
    05-21 12:13:09.034 28588-28588/cjh.lauchmode D/tag-A--singleTop: tag-A--singleTop- onDestroy
    05-21 12:13:10.284 28588-28588/cjh.lauchmode D/tag-M--standard: tag-M--standard- onPause
    05-21 12:13:10.294 28588-28588/cjh.lauchmode D/tag-B--singleInstance: tag-B--singleInstance- onRestart
    05-21 12:13:10.294 28588-28588/cjh.lauchmode D/tag-B--singleInstance: tag-B--singleInstance- onstart
    05-21 12:13:10.294 28588-28588/cjh.lauchmode D/tag-B--singleInstance: tag-B--singleInstance- onResume

    最後に見たのはBで、これはBをジャンプした後、またM:singleInstanceをジャンプして別のスタックを起動したからです.つまり、今は2つのスタックがあり、最初のスタックは上から下まで:M-C-Aです.もう一つのスタックはBの一例で、最後のMジャンプの操作で、Bスタックから最初のスタックに戻りましょう.では、次から次へと戻ります.見たのは最初のスタックのActivityで、順番はM-C-Aで、最初のスタックが片付けられてから、Bスタックが見えます.

    連点A、AActivity–singleTop、Aに対してここで異なる操作をすることができて、先にAを注文して、Mを注文して、最後に2回Aを注文します

    05-21 12:00:30.704 28588-28588/cjh.lauchmode D/tag-M--standard: tag-M--standard- onPause
    05-21 12:00:30.714 28588-28588/cjh.lauchmode D/tag-A--singleTop: tag-A--singleTop- onCreate
    05-21 12:00:30.724 28588-28588/cjh.lauchmode D/tag-A--singleTop: tag-A--singleTop- onstart
    05-21 12:00:30.724 28588-28588/cjh.lauchmode D/tag-A--singleTop: tag-A--singleTop- onResume
    05-21 12:00:31.104 28588-28588/cjh.lauchmode D/tag-M--standard: tag-M--standard- onStop
    05-21 12:00:32.314 28588-28588/cjh.lauchmode D/tag-A--singleTop: tag-A--singleTop- onPause
    05-21 12:00:32.324 28588-28588/cjh.lauchmode D/tag-M--standard: tag-M--standard- onCreate
    05-21 12:00:32.334 28588-28588/cjh.lauchmode D/tag-M--standard: tag-M--standard- onstart
    05-21 12:00:32.334 28588-28588/cjh.lauchmode D/tag-M--standard: tag-M--standard- onResume
    05-21 12:00:32.704 28588-28588/cjh.lauchmode D/tag-A--singleTop: tag-A--singleTop- onStop
    05-21 12:00:33.924 28588-28588/cjh.lauchmode D/tag-M--standard: tag-M--standard- onPause
    05-21 12:00:33.934 28588-28588/cjh.lauchmode D/tag-A--singleTop: tag-A--singleTop- onCreate
    05-21 12:00:33.944 28588-28588/cjh.lauchmode D/tag-A--singleTop: tag-A--singleTop- onstart
    05-21 12:00:33.944 28588-28588/cjh.lauchmode D/tag-A--singleTop: tag-A--singleTop- onResume
    05-21 12:00:34.334 28588-28588/cjh.lauchmode D/tag-M--standard: tag-M--standard- onStop
    05-21 12:00:35.264 28588-28588/cjh.lauchmode D/tag-A--singleTop: tag-A--singleTop- onPause
    05-21 12:00:35.264 28588-28588/cjh.lauchmode D/tag-A--singleTop: tag-A--singleTop- onResume

    ロゴの中で2回目にAというButtonをクリックすると、AActivityがスタックトップではないことがわかり、3回目のクリックでスタックトップでonResumeという方法しか呼び出されず、最後のスタックの上から下までの順番がA-M-A-Mで、終了するとロゴ全体でonDestroyの方法が4回しか呼び出されません
    05-21 12:04:54.604 28588-28588/cjh.lauchmode D/tag-A--singleTop: tag-A--singleTop- onPause
    05-21 12:04:54.614 28588-28588/cjh.lauchmode D/tag-M--standard: tag-M--standard- onRestart
    05-21 12:04:54.614 28588-28588/cjh.lauchmode D/tag-M--standard: tag-M--standard- onstart
    05-21 12:04:54.614 28588-28588/cjh.lauchmode D/tag-M--standard: tag-M--standard- onResume
    05-21 12:04:55.004 28588-28588/cjh.lauchmode D/tag-A--singleTop: tag-A--singleTop- onStop
    05-21 12:04:55.004 28588-28588/cjh.lauchmode D/tag-A--singleTop: tag-A--singleTop- onDestroy
    05-21 12:04:56.964 28588-28588/cjh.lauchmode D/tag-M--standard: tag-M--standard- onPause
    05-21 12:04:56.974 28588-28588/cjh.lauchmode D/tag-A--singleTop: tag-A--singleTop- onRestart
    05-21 12:04:56.974 28588-28588/cjh.lauchmode D/tag-A--singleTop: tag-A--singleTop- onstart
    05-21 12:04:56.974 28588-28588/cjh.lauchmode D/tag-A--singleTop: tag-A--singleTop- onResume
    05-21 12:04:57.354 28588-28588/cjh.lauchmode D/tag-M--standard: tag-M--standard- onStop
    05-21 12:04:57.354 28588-28588/cjh.lauchmode D/tag-M--standard: tag-M--standard- onDestroy
    05-21 12:04:58.294 28588-28588/cjh.lauchmode D/tag-A--singleTop: tag-A--singleTop- onPause
    05-21 12:04:58.304 28588-28588/cjh.lauchmode D/tag-M--standard: tag-M--standard- onRestart
    05-21 12:04:58.304 28588-28588/cjh.lauchmode D/tag-M--standard: tag-M--standard- onstart
    05-21 12:04:58.304 28588-28588/cjh.lauchmode D/tag-M--standard: tag-M--standard- onResume
    05-21 12:04:58.684 28588-28588/cjh.lauchmode D/tag-A--singleTop: tag-A--singleTop- onStop
    05-21 12:04:58.684 28588-28588/cjh.lauchmode D/tag-A--singleTop: tag-A--singleTop- onDestroy
    05-21 12:04:59.554 28588-28588/cjh.lauchmode D/tag-M--standard: tag-M--standard- onPause
    05-21 12:04:59.984 28588-28588/cjh.lauchmode D/tag-M--standard: tag-M--standard- onStop
    05-21 12:04:59.984 28588-28588/cjh.lauchmode D/tag-M--standard: tag-M--standard- onDestroy

    連点C,CActivity-singleTask,singleTaskは実は非常に極端なモードで、それはそのスタックの上に押されたすべてのActivityインスタンスをクリアします。ここではBを踊らないで、Cがどんなに強くても他のスタックに影響を与えることはできません。では、今回はA-C-C-M-C

    05-21 12:21:54.864 21834-21834/cjh.lauchmode D/tag-A--singleTop: tag-A--singleTop- onCreate
    05-21 12:21:54.874 21834-21834/cjh.lauchmode D/tag-A--singleTop: tag-A--singleTop- onstart
    05-21 12:21:54.874 21834-21834/cjh.lauchmode D/tag-A--singleTop: tag-A--singleTop- onResume
    05-21 12:21:55.254 21834-21834/cjh.lauchmode D/tag-M--standard: tag-M--standard- onStop
    05-21 12:21:56.884 21834-21834/cjh.lauchmode D/tag-A--singleTop: tag-A--singleTop- onPause
    05-21 12:21:56.934 21834-21834/cjh.lauchmode D/tag-C--singleTask: tag-C--singleTask- onCreate
    05-21 12:21:56.944 21834-21834/cjh.lauchmode D/tag-C--singleTask: tag-C--singleTask- onstart
    05-21 12:21:56.944 21834-21834/cjh.lauchmode D/tag-C--singleTask: tag-C--singleTask- onResume
    05-21 12:21:57.334 21834-21834/cjh.lauchmode D/tag-A--singleTop: tag-A--singleTop- onStop
    05-21 12:21:58.624 21834-21834/cjh.lauchmode D/tag-C--singleTask: tag-C--singleTask- onPause
    05-21 12:21:58.624 21834-21834/cjh.lauchmode D/tag-C--singleTask: tag-C--singleTask- onResume
    05-21 12:22:00.634 21834-21834/cjh.lauchmode D/tag-C--singleTask: tag-C--singleTask- onPause
    05-21 12:22:00.634 21834-21834/cjh.lauchmode D/tag-M--standard: tag-M--standard- onCreate
    05-21 12:22:00.644 21834-21834/cjh.lauchmode D/tag-M--standard: tag-M--standard- onstart
    05-21 12:22:00.644 21834-21834/cjh.lauchmode D/tag-M--standard: tag-M--standard- onResume
    05-21 12:22:01.024 21834-21834/cjh.lauchmode D/tag-C--singleTask: tag-C--singleTask- onStop
    05-21 12:22:03.374 21834-21834/cjh.lauchmode D/tag-M--standard: tag-M--standard- onPause
    05-21 12:22:03.394 21834-21834/cjh.lauchmode D/tag-A--singleTop: tag-A--singleTop- onCreate
    05-21 12:22:03.404 21834-21834/cjh.lauchmode D/tag-A--singleTop: tag-A--singleTop- onstart
    05-21 12:22:03.404 21834-21834/cjh.lauchmode D/tag-A--singleTop: tag-A--singleTop- onResume
    05-21 12:22:03.804 21834-21834/cjh.lauchmode D/tag-M--standard: tag-M--standard- onStop
    05-21 12:22:08.194 21834-21834/cjh.lauchmode D/tag-M--standard: tag-M--standard- onDestroy
    05-21 12:22:08.194 21834-21834/cjh.lauchmode D/tag-A--singleTop: tag-A--singleTop- onPause
    05-21 12:22:08.214 21834-21834/cjh.lauchmode D/tag-C--singleTask: tag-C--singleTask- onRestart
    05-21 12:22:08.214 21834-21834/cjh.lauchmode D/tag-C--singleTask: tag-C--singleTask- onstart
    05-21 12:22:08.214 21834-21834/cjh.lauchmode D/tag-C--singleTask: tag-C--singleTask- onResume
    05-21 12:22:08.584 21834-21834/cjh.lauchmode D/tag-A--singleTop: tag-A--singleTop- onStop
    05-21 12:22:08.584 21834-21834/cjh.lauchmode D/tag-A--singleTop: tag-A--singleTop- onDestroy

    最後のロゴから、私が最後にCをジャンプしたとき、スタックの中のAとMが破壊されたことがわかります.
    05-21 12:22:03.804 21834-21834/cjh.lauchmode D/tag-M--standard: tag-M--standard- onStop
    05-21 12:22:08.194 21834-21834/cjh.lauchmode D/tag-M--standard: tag-M--standard- onDestroy
    05-21 12:22:08.194 21834-21834/cjh.lauchmode D/tag-A--singleTop: tag-A--singleTop- onPause
    05-21 12:22:08.214 21834-21834/cjh.lauchmode D/tag-C--singleTask: tag-C--singleTask- onRestart
    05-21 12:22:08.214 21834-21834/cjh.lauchmode D/tag-C--singleTask: tag-C--singleTask- onstart
    05-21 12:22:08.214 21834-21834/cjh.lauchmode D/tag-C--singleTask: tag-C--singleTask- onResume
    05-21 12:22:08.584 21834-21834/cjh.lauchmode D/tag-A--singleTop: tag-A--singleTop- onStop
    05-21 12:22:08.584 21834-21834/cjh.lauchmode D/tag-A--singleTop: tag-A--singleTop- onDestroy

    ここで破棄されたAとMはCに押されたActicityの例であり,ロールバックはより直感的である.
    05-21 12:24:41.364 21834-21834/cjh.lauchmode D/tag-C--singleTask: tag-C--singleTask- onPause
    05-21 12:24:41.374 21834-21834/cjh.lauchmode D/tag-A--singleTop: tag-A--singleTop- onRestart
    05-21 12:24:41.374 21834-21834/cjh.lauchmode D/tag-A--singleTop: tag-A--singleTop- onstart
    05-21 12:24:41.374 21834-21834/cjh.lauchmode D/tag-A--singleTop: tag-A--singleTop- onResume
    05-21 12:24:41.754 21834-21834/cjh.lauchmode D/tag-C--singleTask: tag-C--singleTask- onStop
    05-21 12:24:41.754 21834-21834/cjh.lauchmode D/tag-C--singleTask: tag-C--singleTask- onDestroy
    05-21 12:24:42.274 21834-21834/cjh.lauchmode D/tag-A--singleTop: tag-A--singleTop- onPause
    05-21 12:24:42.284 21834-21834/cjh.lauchmode D/tag-M--standard: tag-M--standard- onRestart
    05-21 12:24:42.284 21834-21834/cjh.lauchmode D/tag-M--standard: tag-M--standard- onstart
    05-21 12:24:42.284 21834-21834/cjh.lauchmode D/tag-M--standard: tag-M--standard- onResume
    05-21 12:24:42.654 21834-21834/cjh.lauchmode D/tag-A--singleTop: tag-A--singleTop- onStop
    05-21 12:24:42.654 21834-21834/cjh.lauchmode D/tag-A--singleTop: tag-A--singleTop- onDestroy
    05-21 12:24:43.934 21834-21834/cjh.lauchmode D/tag-M--standard: tag-M--standard- onPause
    05-21 12:24:44.384 21834-21834/cjh.lauchmode D/tag-M--standard: tag-M--standard- onStop
    05-21 12:24:44.384 21834-21834/cjh.lauchmode D/tag-M--standard: tag-M--standard- onDestroy

    5つのActivityをスキップしたにもかかわらず、最後に終了してonDestroy()が3回しか出力されず、C破棄後に出力されたので、Cに押されたインスタンスはとっくに破棄されていることがわかります.

    これで、4つのオープンモードについて话し终わりました。最后にDemoの住所で、何もありませんが、考えてみるとやはり怠け者の子供靴があります:http://download.csdn.net/detail/cjh_android/9527024