在当前状态下启动活动

时间:2010-05-17 21:50:18

标签: android android-intent

我正在尝试创建一个任务切换器,我成功了。我唯一的问题是,当我开展活动时,它们会重新启动,因为它们是新的活动(例如,我正在写一封电子邮件,我回家并进入我的活动,启动电子邮件,然后应用程序启动电子邮件回合又回来了到收件箱,电子邮件丢失了)所以这不是真正的多任务处理。

以下是我的步骤:

1)获取所有正在运行的应用程序:

List<ActivityManager.RunningTaskInfo> allTasks = activityManager.getRunningTasks(30);

2)获得意图:

for (ActivityManager.RunningTaskInfo aTask : allTasks) {
        Intent i = new Intent(Intent.ACTION_MAIN);
        i.setComponent(aTask.baseActivity);
(...)

3)点击按钮启动应用程序:

    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK| Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED).addCategory(Intent.CATEGORY_LAUNCHER);
    monthis.startActivity(intent);

`

这段代码有什么问题?我应该做些不同的事情吗?

非常感谢您的回答。

3 个答案:

答案 0 :(得分:3)

创建Intent时,不应使用Intent.FLAG_ACTIVITY_NEW_TASK,应使用FLAG_ACTIVITY_REORDER_TO_FRONT。

答案 1 :(得分:0)

对不起,如果我在解释中犯了错误,我就是一个“noob”,并告诉我这里的经验,以改善人们寻找相同答案的结果。

事实上,我必须使用intent.setFlag(FLAG_ACTIVITY_NEW_TASK | FLAG_ACTIVITY_REORDER_TO_FRONT)才能获得最佳效果。替换不是最好的主意。

当我想启动自己的应用程序时,不使用FLAG_ACTIVITY_NEW_TASK使电子邮件应用程序启动。因为电子邮件与我的应用程序“链接”了相同的任务。

但卢卡斯,我保持你的答案是最好的。

答案 2 :(得分:0)

我想我找到了答案。让我用简单的话说出我的所作所为,

假设我有两个活动activity1和activity2,我正在从activity1导航到activity2(我已经在activity2中完成了一些工作),然后通过单击activity1中的按钮再次返回到活动1。现在在这个阶段我想回到activity2,我想在上次离开activity2时看到我的activity2处于相同状态。

对于上面的场景,我所做的是在清单中我做了一些像这样的改动:

<activity android:name=".activity2"
          android:alwaysRetainTaskState="True"
          android:launchMode="singleInstance">
</activity>

在按钮点击事件的activity1中我做了这样的事情:

Intent intent=new Intent();
intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
intent.setClassName(this,"com.mainscreen.activity2");
startActivity(intent);

并且在按钮点击事件的activity2中,我这样做了:

Intent intent=new Intent();
intent.setClassName(this,"com.mainscreen.activity1");
startActivity(intent);

现在将会发生的事情是,我们在activity2中所做的任何更改都不会丢失,我们可以在与之前离开的状态相同的状态下查看activity2。

我相信这是答案,这对我来说很好。如果我错了,请纠正我。