我有 3 个活动:A(启动器)、B 和 C。我已将 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 进入后堆(在最后一步)而我在前进时没有遇到。
另一个疑问是,通过 newInstance,我认为最多将为 A 创建一个新任务两次——我应该能够在最近的任务中看到这一点——但我不能。我如何“看到”一个任务?
编辑:添加相关代码(为简洁起见仅添加相关代码):
**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);
}