首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >安卓深度链接。从历史上打开应用程序时,意图不会重置

安卓深度链接。从历史上打开应用程序时,意图不会重置
EN

Stack Overflow用户
提问于 2014-06-18 11:38:42
回答 1查看 2.7K关注 0票数 12

我有一个关于Android任务和意图管理的问题。

场景

  1. 用户得到一个深入链接到应用程序的推送。
  2. 我们显示了一个将URI放入意图数据的通知。
  3. 用户单击通知,然后进入应用程序并重定向到由深度链接描述的某些Feature1Activity。
  4. 用户环顾四周,然后退出应用程序。
  5. 稍后,用户从历史上打开该应用程序(长按主页或多任务处理按钮)。
  6. 现在,使用来自通知的相同意图(在意图数据中使用深度链接)启动应用程序。
  7. 因此,用户再次进入Feature1Activity。

问题:

从历史上启动应用程序(长按主键或多任务处理按钮)不会重置任务(从应用图标启动时会这样做)。

我明白,从历史上启动一个应用程序不应该重置任务,因为它被用来作为“回到原样”。然而,在我的例子中,这是一个问题,因为从通知启动应用程序是一次性的事情。

还有人遇到过这个问题吗?有人知道解决办法吗?

更深入的

PendingIntent内部的意图是这样构建的:

代码语言:javascript
复制
Intent intent = new Intent (Intent.ActionView);
intent.addFlags (Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addFlags (Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.addFlags (Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
intent.setData (Uri.Parse (DEEP_LINK_URL));

就在这一天,我发现了FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET,我真的以为它能解决我的问题,但没有什么区别。

有三项值得关注的活动:

代码语言:javascript
复制
SplashActivity       (main launcher & listener of the deep-linking schema -- this activity just redirects either to login or OverviewActivity)
OverviewActivity     (authorized user's main activity)
Feature1Activity     (any feature that the deep-link is pointing to)

当用户单击通知时所发生的情况是,SplashActivity充当模式的侦听器,并将深度链接url转换为两个意图,以使用Activity.startActivities (Intent[])启动OverviewActivity和Feature1Activity。

当我查看SplashActivity内部通知的意图时,它总是包含数据中的深层链接。

One围绕着工作

这里有一项工作,将一些booleanExtra字段设置为通知意图(例如"ignoreWhenLaunchedFromHistory“= true),然后在重定向之前签入SplashActivity

代码语言:javascript
复制
boolean fromHistory = (getIntent().getFlags() & FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY) == FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY;

if (fromHistory && getIntent().getBooleanExtra ("ignoreWhenLaunchedFromHistory", false))
    // Don't follow deep-link even if it exists
else
    // Follow deep-link

除了它既粗糙又丑陋之外,你能看到周围的工作有什么问题吗?

编辑:工作周围的工作,只有当我负责发送意图与深度链接。因为没有外部源可以知道"ignoreWhenLaunchedFromHistory“的额外信息。

EN

回答 1

Stack Overflow用户

发布于 2015-09-18 14:22:59

据我所知,在清单上使用android:excludeFromRecents="true"(作为活动声明的属性)可能会改善这个问题?

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24284552

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档