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);
}