首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >怪异的singleTask行为

怪异的singleTask行为
EN

Stack Overflow用户
提问于 2016-06-03 21:46:54
回答 1查看 239关注 0票数 0

我理解launchMode:"singleTask“意味着如果之前创建了一个活动,并要求它在将来显示出来,那么Android只会显示旧的一个,而不是创建一个新的实例。我所面临的问题可以用一个例子来说明:-

假设我们有两项活动

A权限

B (活动与launchMode="singleTask")启用(这是其宣言中的全部内容)

现在,如果A创建了一个与B (A->B)相对应的意图,则A将被完成并从活动堆栈中删除。我怎样才能阻止这一切的发生。我想要的是,当A调用B(创建一个意图)时,以前的B实例被返回,A保持原样,而不是被销毁。谢谢你的帮助。任何帮助都是非常感谢的。

编辑

代码语言:javascript
代码运行次数:0
运行
复制
<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>
EN

回答 1

Stack Overflow用户

发布于 2016-12-28 15:14:47

如果您只想让两个活动在同一个任务中来回切换,那么您应该删除所有特殊的启动模式,然后从另一个活动中启动一个活动,如下所示:

代码语言:javascript
代码运行次数:0
运行
复制
Intent intent = new Intent(this, ActivityX.class);
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
startActivity(intent);

如果使用此方法从A启动A,也使用此方法从B启动A,则任务中的每个Activity将有一个实例,它们将只更改堆栈中的位置。这不会创建任何新的实例。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37623939

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档