3

以下程序:

  1. 启动我的应用程序,堆栈:[HomeActivity]
  2. 访问 Facebook,使用深层链接进入 Activity X
  3. 按返回按钮会返回HomeActivity而不是 Facebook

预期的

  1. 启动我的应用程序,堆栈:[HomeActivity]
  2. 访问 Facebook,使用深层链接进入 Activity X
  3. 按返回按钮会返回 Facebook 应用程序

当我的应用程序没有事先启动时,我得到了预期的行为。我看到像 Instagram 这样的其他应用程序确实设法让它正常工作。因此,即使您的应用程序在后台运行,它也会将您带回到发出深层链接意图的活动。

我的活动有launchMode="singleTop"onBackPressed()没有被覆盖,所以它调用超类实现。

我在这里缺少什么才能做到这一点?

我调试了它并onBackPressed()最终调用finish()了它,但它让我回到了我的应用程序而不是 Facebook。

4

2 回答 2

4

添加

android:taskAffinity=""

<activity>清单中“深层链接活动”的标签。

正在发生的事情是 Facebook 正在启动您的“深度链接活动” Intent.FLAG_ACTIVITY_NEW_TASK(您应该能够通过在或Intent中检查您的活动中的内容来验证这一点。onCreate()onNewIntent()

如果您的应用程序已经在运行,Android 会将您现有的任务置于前台并在该任务之上启动“深度链接活动”。当您然后按 BACK 时,它只会完成您的“深层链接活动”并将您放入现有任务。

Android 这样做是因为您所有的 Activity 共享相同的taskAffinity,因此当它需要为您的应用创建新任务时,它会首先尝试找到具有相同亲和力的现有任务。

如果您将taskAffinity“深度链接活动”设置为空,这应该会阻止 Android 寻找现有任务来启动 Activity。它只会创建一个新任务并将您的“深度链接活动”启动到该新任务中。然后,当您按 BACK 时,您的 Activity 完成,任务将变为空,因此任务将完成,它会将您返回到任务堆栈中的上一个任务(应该是 Facebook,因为您的应用程序已启动从那里)。

于 2015-02-04T16:38:16.493 回答
0

原因是Facebook的推出开启了一项新的任务。Back 总是在任务中向上导航活动堆栈。

如果您可以控制启动 Facebook 的意图,则有一些标志可以控制在其中启动 Activity 的任务。默认是在同一个任务中启动。

我怀疑 Intent.FLAG_ACTIVITY_NEW_TASK 是系统有意添加的——所以这可能是设计使然(按预期工作)。

PS:本演示文稿将教您所有您需要了解的有关 android 活动和任务的知识:http ://www.slideshare.net/RanNachmany/manipulating-android-tasks-and-back-stack

于 2015-02-04T13:02:11.537 回答