0

我有 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);
}
4

0 回答 0