gpt4 book ai didi

安卓深度链接。从历史记录中打开应用时,Intent 不会重置

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:13:02 41 4
gpt4 key购买 nike

我对 Android 任务和 Intent 管理有疑问。

场景

  1. 用户通过应用的深层链接获得推送。
  2. 我们显示一条通知,将 URI 放入 Intent 数据中。
  3. 用户点击通知并进入应用程序并重定向到深层链接描述的某些 Feature1Activity。
  4. 用户环顾四周,然后退出应用。
  5. 稍后,用户从历史记录中打开应用(长按主页或多任务按钮)。
  6. 现在使用通知中使用的相同 Intent (带有 Intent 数据中的深层链接)来启动应用。
  7. 因此,用户再次进入 Feature1Activity。

问题:

从历史记录启动应用程序(长按主屏幕或多任务按钮)不会重置任务(从应用程序图标启动时会重置)。

我知道从历史记录启动应用程序不应该重置任务,因为它旨在用作“立即返回您所在的位置”。但是,就我而言,这是一个问题,因为从通知启动应用程序是一次性的事情。

有没有人遇到过这个问题?有人知道任何解决方案吗?

更深入

PendingIntent 中的 Intent 是这样构建的:

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,我真的认为它可以解决我的问题,但没有任何区别。

感兴趣的 Activity 有以下三种:

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 转换为两个 Intent 以使用 Activity.startActivities (Intent[]) 启动 OverviewActivity 和 Feature1Activity。

当我从 SplashActivity 中的通知查看 Intent 时,它始终包含数据中的深层链接。

一种解决方法

有一个解决方法,将一些 booleanExtra 字段设置为通知 Intent (例如“ignoreWhenLaunchedFromHistory”= true),然后在重定向之前检查 SplashActivity

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

除了它的骇人听闻和丑陋之外,你能看出这个变通办法有什么问题吗?

编辑:只有当我负责发送带有深层链接的 Intent 时,变通方法才有效。由于没有外部来源可以知道额外的“ignoreWhenLaunchedFromHistory”。

最佳答案

据我所知,也许在您的 list 上使用 android:excludeFromRecents="true"(作为 Activity 声明的属性)可能会改善问题?

关于安卓深度链接。从历史记录中打开应用时,Intent 不会重置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24284552/

41 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com