【问题标题】:How can I clear activities stack when user tap on FCM notification message?当用户点击 FCM 通知消息时,如何清除活动堆栈?
【发布时间】:2018-09-23 11:51:51
【问题描述】:

我的 android 应用从网络服务器接收 FCM 通知消息(显示消息)。

如果通知在应用程序处于后台模式时到达,并且用户点击它,则会在任务堆栈顶部启动一个新的“MainActivity”。然后,当用户点击后退按钮时,此活动结束,并显示最后一个启动的活动(在点击通知之前)。

我想要的是在用户点击通知时清除所有活动堆栈。这样,当用户点击后退按钮时,应用程序将完成,保留活动层次结构。

如果我按照here 的描述管理意图启动,这可能会很容易,但如FCM Message types docs 所述,显示消息由 FCM SDK 自动处理,因此在这种情况下,我没有创建任何意图;当点击通知时,android会自动启动“MainActivity”。

那么,有没有办法实现呢?

【问题讨论】:

    标签: android android-intent firebase-cloud-messaging activity-stack


    【解决方案1】:
    <activity
    android:name=".MainActivity"
    android:launchMode="singleTop">
    

    将以下内容添加到您的清单文件中。 https://inthecheesefactory.com/blog/understand-android-activity-launchmode/en

    【讨论】:

    • 感谢您的回答,但不适用于我。相反,我使用了以下代码: android:clearTaskOnLaunch="true" android:launchMode="singleTask"
    【解决方案2】:

    对我来说,这很完美:

    <activity
    android:name=".MainActivity"
    android:clearTaskOnLaunch="true"
    android:launchMode="singleTask">
    

    【讨论】:

    • 这对我不起作用。我的场景:启动 MainActivity -> clic 列表项 -> 启动 DetailActivity(完成 MainActivity)。应用程序在后台保留在 DetailActivity 中。到达通知,用户点击并打开 MainActivity。但是,如果用户点击返回按钮,它会显示 DetailActivity 而不是退出应用程序。你有什么线索吗?谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-19
    • 1970-01-01
    • 1970-01-01
    • 2011-10-27
    • 1970-01-01
    相关资源
    最近更新 更多