我正在尝试创建一个任务切换器,我成功了。我唯一的问题是,当我开展活动时,它们会重新启动,因为它们是新的活动(例如,我正在写一封电子邮件,我回家并进入我的活动,启动电子邮件,然后应用程序启动电子邮件回合又回来了到收件箱,电子邮件丢失了)所以这不是真正的多任务处理。
以下是我的步骤:
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);
`
这段代码有什么问题?我应该做些不同的事情吗?
非常感谢您的回答。
答案 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。
我相信这是答案,这对我来说很好。如果我错了,请纠正我。