如何解决Android 通知导航到现有活动
我正在修改 Android 通知。我有一个带有 Fragment 导航的 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) 永远不要使用 TaskStackBuilder
。默认行为是重置任务(即:删除堆栈中的任何现有活动),这通常不是您想要的。 TaskStackBuilder
可用于构建复杂的后台堆栈,但您确实需要了解它在幕后是如何工作的,并且它有很多副作用。一般来说,尽量避免。
规则 #2) 如果您只想将现有任务带到前台,无论您离开它时处于什么状态,请使用 Intent
中的“启动 PackageManager
”:
Intent intent = getPackageManager()
.getLaunchIntentForPackage("package.name.of.app.to.launch");
startActivity(intent);
并且您不需要任何特殊标志或启动模式。
规则 #3) 避免使用特殊的启动模式 singleTask
和 singleInstance
。它们通常不是您所需要的,并且它们有很多不明显的副作用。如果您正在构建 HOME 屏幕替代品,通常只需要这些。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。