【问题标题】:android - return to app from service or notificationandroid - 从服务或通知返回到应用程序
【发布时间】:2012-04-10 15:22:10
【问题描述】:

我正在处理的应用程序的流程存在一些问题。 基本上,我有一个始终保存通知的服务,按下通知应该返回到应用程序的最新活动,而无需重新打开它(意味着它将恢复)。 此外,在特定活动(可能还有其他活动)上,我需要单击后退按钮会退出应用程序(和服务),因此下次最终用户通过启动器或长按主页按钮启动它时,它会回到第一个活动。

简而言之,要求是:

  • 服务通知点击 -> 恢复当前活动,不创建新活动。
  • 返回单击特定活动 -> 完全关闭应用程序(清除所有应用程序的堆栈)。

所以,例如,如果我有活动 A 调用活动 B(这是特殊活动): 如果最终用户点击了 home ,然后通过通知返回到应用程序(或通过启动器/长按主页按钮启动),它将返回到他离开它的活动 B 的确切状态。 此外,如果最终用户在活动 B 上按下了后退按钮,则应用程序将关闭(并且服务和通知将消失),下次他打开应用程序(无论如何),他将返回活动 A。

我尝试在活动 B 上使用“singleInstance”,但它总是会回到活动 B,因为它在自己的任务中,无论我使用哪个标志(我已经尝试过 FLAG_ACTIVITY_REORDER_TO_FRONT 和其他一些标志) . 如果不使用它,通知将打开一个新的活动 B 实例。

有人可以帮忙吗?

【问题讨论】:

    标签: android service android-activity android-intent notifications


    【解决方案1】:

    另一种方法是将通知的意图设置为启动一个新的虚假活动,该活动将在创建后立即关闭。 该意图还将具有“FLAG_ACTIVITY_NEW_TASK”标志。

    希望这种方法对每个人都有效。 太糟糕了,这个解决方案看起来更像是一种解决方法,而不是真正的解决方案。

    另一种选择是这个链接: Change notification intent in Android

    【讨论】:

      【解决方案2】:

      jelly bean (android 4.1) 现在为这个确切的问题引入了一个新的 API:

      http://www.youtube.com/watch?feature=player_embedded&v=Yc8YrVc47TI#t=830s

      但是,我不确定我是否了解如何使用它以及它是如何工作的。它是否有可能重新创建整个活动堆栈?这不是很成问题吗,因为它们可能包含以前不存在的数据(因为它们已刷新)?

      这听起来也有问题,因为这意味着我需要监控所有操作以便稍后恢复它们。

      【讨论】:

      • 他们还制作了一个导航视频,似乎他们不希望通知返回到现有任务。相反,他们希望它开始一项新的任务来取代之前的任务。我认为这是错误的,不直观。这是链接:developers.google.com/events/io/sessions/gooio2012/114。如果其他人想到我的问题的答案,请写下来。
      【解决方案3】:

      好的,尽管这不是完全正确的答案,但就我而言,我对活动 B 使用了“singleTop”,并选择在移动到活动 B 时关闭活动 A。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-12-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多