Android 通知导航到现有活动

Posted

技术标签:

【中文标题】Android 通知导航到现有活动【英文标题】:Android notification navigate to existing activity 【发布时间】:2021-06-07 19:27:06 【问题描述】:

我正在修改 android 通知。我有一个带有片段导航的 Activity 应用程序,这就是我想要实现的目标:当我点击通知时,我想要

如果没有,则启动我的 Activity 的新实例 如果后堆栈或其他任务中有一个,请重新打开 在我留下的片段中

我目前在做什么:

        val intent = Intent(context, MainActivity::class.java)
        return TaskStackBuilder.create(context).run 
            addNextIntentWithParentStack(intent)
            getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT)
        

我为我的 Activity 尝试了清单中的每个 launchMode,但它总是从第一个 Activity 屏幕开始,而不是我离开应用的那个屏幕。

【问题讨论】:

【参考方案1】:

规则 #1) 永远不要使用TaskStackBuilder。默认行为是重置任务(即:删除堆栈中的任何现有活动),这通常不是您想要的。 TaskStackBuilder 可用于构建复杂的后台堆栈,但您确实需要了解它在幕后是如何工作的,并且它有很多副作用。一般来说,尽量避免。

规则 #2)如果您只想将现有任务置于前台,无论您离开时它处于何种状态,请使用来自PackageManager 的“启动Intent”:

Intent intent = getPackageManager()
    .getLaunchIntentForPackage("package.name.of.app.to.launch");
startActivity(intent);

而且您不需要任何特殊标志或启动模式。

规则 #3) 避免使用特殊的启动模式 singleTasksingleInstance。它们通常不是您所需要的,并且它们有很多不明显的副作用。如果你正在构建一个主屏幕替换,你通常只需要这些。

【讨论】:

以上是关于Android 通知导航到现有活动的主要内容,如果未能解决你的问题,请参考以下文章

Android:如何切换到现有活动?

Snackbar 仅在 Android 应用程序中的一项活动中显示

Android 将App的内容延伸到状态栏/导航栏

带有推送通知的深层链接 - FCM - Android

将Button链接到android中的现有活动

如何将 android 活动导航到 xamarin 表单