0

A(ランチャー)、B、Cの3つのアクティビティがあります。AのlaunchMode(マニフェスト)をsingleInstanceとして指定しました。AにはBに移動するためのボタンがあり、BにはCを起動するためのボタンがあり、CにはAを起動するためのボタンがあります。これらはすべてデフォルトの「標準」呼び出しモードを使用しています。

私は次の手順を実行します:

  • アプリの起動->A->起動B->B->起動C->C->起動A->A->起動B->C

これは私をCに連れて行きます(Bではありません)!理由がわかりません。

別の一連の手順:

  • アプリの起動->A->起動B->B->起動C->C->起動A->A->起動B->C->起動A->A->起動B->C->戻る->B->戻る->A->戻る->終了

スタックの残りの部分はどこに行きましたか?そして、私が前進している間に遭遇しなかったのに、どうしてBが(最後のステップで)バックスタックに入ったのですか。

もう1つの疑問は、newInstanceによって、Aに対して最大2回新しいタスクが作成されると思っていたということです。最近のタスクでそれを確認できるはずですが、できません。タスクを「見る」にはどうすればよいですか?

編集:関連するコードを追加する(簡潔にするために関連するコードのみを追加する):

**Manifest**
<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name="com.example.backstack.B"
        android:label="@string/title_activity_b" >
    </activity>
    <activity
        android:name="com.example.backstack.A"
        android:label="@string/title_activity_"
        android:launchMode="singleInstance" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:name="com.example.backstack.C"
        android:label="@string/title_activity_c" >
    </activity>

A.java-launchBはレイアウトxmlのonClickメンバーとして設定されます

public void launchB(View v){
    Intent i= new Intent(this, B.class);
    startActivity(i);
}

B.java

public void launchC(View v){
    Intent i= new Intent(this, C.class);
    startActivity(i);
}

C.java

public void launchA(View v){
    Intent i= new Intent(this, A.class);
    startActivity(i);
}
4

0 に答える 0