【问题标题】:Launch a single activity in a new task在新任务中启动单个活动
【发布时间】:2017-09-04 10:05:44
【问题描述】:

我有一个在后台运行服务(音频播放器)并在运行时显示持续通知的应用程序。当用户单击通知时,我想打开播放器活动而不显示在最近列表中并且不将应用程序的其余部分放在前面,因此当用户按下后退按钮时,他们会直接转到应用程序以前都在用,不管什么。我尝试了三种不同的方法,但都没有奏效。

  1. FLAG_ACTIVITY_NEW_TASK 开始一个意图。如果存在现有任务,则将其置于最前面。当用户按下后退按钮时,播放器 Activity 完成并显示所述任务中的前一个 Activity,而不是返回到点击通知时处于前台的应用。
  2. 使用以下标志启动意图:FLAG_ACTIVITY_NEW_TASK | FLAG_ACTIVITY_MULTIPLE_TASK | FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS。现有任务没有被带到前面,并且后退按钮按预期工作。但是,此活动完成后,该应用程序将完全从最近列表中消失。恢复它的唯一方法是从启动器图标启动它,这会将现有任务带到前台,就像从最近打开的一样。
  3. 使用以下标志启动意图:FLAG_ACTIVITY_NEW_TASK | FLAG_ACTIVITY_MULTIPLE_TASK | FLAG_ACTIVITY_NO_HISTORY。该活动从一项新任务开始,但该任务取代了最近列表中的主要任务。添加FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS 使其行为与前一种情况完全相同。

是否有任何适当的方法来进行这种导航,或者我应该放弃尝试,只是让它将整个现有任务带到最前面,并在其上启动玩家活动,如案例 1?

【问题讨论】:

    标签: android android-intent android-activity


    【解决方案1】:

    在 Manifest 文件的这个 Activity Tag 中将 launchMode 声明为“singleInstance”是否方便?我认为这可能对你有帮助。但我不确定。你可以试试

    【讨论】:

      【解决方案2】:

      也许您可以尝试将启动模式作为清单中您的 notificationActivity 的标签;

      android:launchMode="singleInstance"
      

      【讨论】:

        【解决方案3】:

        您应该尝试新的以文档为中心的 API:

        Adding Tasks to the Recents Screen

        【讨论】:

          【解决方案4】:

          我实际上找到了正确的方法:将taskAffinity 属性添加到清单中的<activity>。这样一来,它就不会干扰应用程序的其余部分最近的显示方式,这正是我想要实现的。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2019-11-21
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多