【问题标题】:Android notification navigate to existing activityAndroid 通知导航到现有活动
【发布时间】: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 屏幕开始,而不是我离开应用的那个屏幕。

【问题讨论】:

    标签: android android-intent android-notifications android-pendingintent


    【解决方案1】:

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

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

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

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

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

    【讨论】:

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