代码之家  ›  专栏  ›  技术社区  ›  Waza_Be

在当前状态下启动活动

  •  3
  • Waza_Be  · 技术社区  · 16 年前

    我正在做一个任务转换程序,但我成功了。我唯一的问题是,当我启动活动时,它们会重新启动,因为它们是新的活动(例如,我正在写一封电子邮件,我按Home键进入我的活动,启动电子邮件,然后应用程序启动,电子邮件会返回收件箱,电子邮件会丢失),所以这不是真正的多任务处理。

    以下是我的步骤:

    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 回复  |  直到 9 年前
        1
  •  3
  •   Lucas S.    16 年前

    在创建意图时,不应使用intent.flag_activity_new_任务,应使用flag_activity_reorder_to_front。

        2
  •  0
  •   Waza_Be    16 年前

    很抱歉,如果我在解释中犯了错误,我是个“笨蛋”,我只是告诉大家我的经验,以改善人们寻找相同答案的结果。

    事实上,我必须使用intent.setflag(flag揙activity_new_task_flag揙activity_reorder揙u to_front)以获得最佳结果。更换不是最好的主意。

    不使用标记活动使电子邮件应用程序在我想启动自己的应用程序时启动。因为电子邮件“链接”的任务与我的应用程序相同。

    但是卢卡斯,我把你的回答保留得最好。

        3
  •  0
  •   roy mathew    14 年前

    我想我找到了答案。让我用简单的话告诉你我做了什么,

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

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

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

    在活动1的按钮点击事件中,我这样做了:

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

    在Activity2 on Button Click事件中,我这样做了:

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

    现在将要发生的是,无论我们在活动2中所做的更改是什么,都不会丢失,并且我们可以以与以前相同的状态查看活动2。

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