奇怪的单任务行为



我知道launchMode:"singleTask"意味着如果之前已经创建了一个活动,并且将来被请求显示,Android将只显示旧的而不是创建一个新的实例。我面临的问题可以用一个例子来说明:-

假设我们有两个活动
一个行动
B(启用了 launchMode="singleTask") 的活动(这是其清单声明中的所有内容)

现在,如果 A 创建了一个对应于 B (A->B) 的意图,则 A 完成并从活动堆栈中删除。我怎样才能防止这种情况发生.我想要的是,当 A 调用 B(创建意图)时,返回 B 的先前实例,并且 A 保持原样并且不会被销毁。谢谢你的帮助。任何帮助不胜感激

编辑

<activity
        android:name="com.example.Activities.A"
        android:launchMode="singleTask"
        android:clearTaskOnLaunch="false"
        android:finishOnTaskLaunch="false"
        android:label="@string/app_name"
        >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>
    <activity
        android:name="com.example.Activities.B"
        android:launchMode="singleTask"
        android:clearTaskOnLaunch="false"
        android:finishOnTaskLaunch="false"
        android:label="@string/app_name"
        >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>

如果您只想在同一任务中来回切换 2 个活动,那么您应该删除所有特殊的启动模式,只需像这样从另一个活动启动一个活动:

Intent intent = new Intent(this, ActivityX.class);
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
startActivity(intent);

如果您使用此方法从A开始B,并且还使用此方法从B开始A,那么您的任务中每个Activity都有一个实例,它们只会更改堆栈中的位置。这不会创建任何新实例。

还要删除<intent-filter>声明,您不需要它们。您只需要一个根Activity,其中应包含"ACTION=MAIN"和"CATEGORY=LAUNCHER"。

相关内容

  • 没有找到相关文章

最新更新