Android Activity启动模式和深层链接问题

2023-12-27

我的应用程序有 2 个活动。 应用程序的根 Activity 是 MainActivity。如果凭据丢失或无效,用户将在完成 MainActivity 时重定向到 LoginActivity。

如果我将主活动的启动模式设置为 singleTask 并且我位于 LoginActivity 的内部片段 => 最小化应用程序 -> 从启动器图标启动应用程序 => MainActivity 启动(因为它是 singleTask 活动)并且重定向到 LoginActivity,当然也重定向到堆栈中的第一个片段。

想要的行为(就像从最近重新启动时发生的那样)是它将保留当前活动的实例并在 LoginActivity 的堆栈中显示正确的片段。

当然,通过将启动模式设置为 singleTop 可以轻松解决此问题,但随后会发生不同的问题! DeepLink 麻烦了!

如果我的应用程序在后台打开,并且我在 singleTop 模式下单击浏览器或电子邮件中的链接 - 该应用程序将作为转发应用程序的子任务打开(如果您单击“最近”,您将看到您的应用程序打开两次 - 一次作为以前存在的常规实例,并且包含在浏览器/电子邮件中)。 这当然非常不方便,可以通过 - 众所周知 - 将启动模式设置为 singleTask 来解决!

对此问题的任何帮助将不胜感激。

   <!-- Main Activity -->
    <activity
        android:name=".MainActivity"
        android:label="@string/app_name"
        android:launchMode="singleTask"
        android:screenOrientation="portrait">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
        <intent-filter>
            <action android:name="android.intent.action.VIEW" />

            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />
            <data
                android:host="somehost"
                android:scheme="myscheme" />
        </intent-filter>
    </activity>

    <!-- Login Activity -->
    <activity
        android:name="LoginActivity"
        android:launchMode="singleTask"
        android:screenOrientation="portrait" />

好吧,感谢 orelzion 的提示,我成功解决了这个问题:

我确实创建了一个新的 DeepLinkActivity,它使用以下标志启动了 MainActivity(我将启动模式从“singleTask”更改为“singleTop”):

Intent.FLAG_ACTIVITY_REORDER_TO_FRONT | Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK

需要所有标志才能解决尝试解决我的问题时出现的一些问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android Activity启动模式和深层链接问题 的相关文章

随机推荐

  • 同一目录中的两个不同的 Git 存储库

    我想维护两个不同的 git 存储库 存储库应保留在同一根目录中 如何实现 我想要的是 管理两个略有不同的存储库 我可以在同一目录中有两个完全不同的存储库吗 您可以通过在 git 命令本身上添加使用以下两个选项之一来实现此目的 git wor
  • 如何给UITextView实现搜索功能?

    我有40多个观点 各有各的观点UITexView 我想实现一个搜索功能 允许用户跨域搜索UITextViews 实际上 我什至不知道如何实现 1 的搜索功能UITextView 因此我不知道这是否可能 我已经在网上搜索并在这里寻找它 但没有
  • 锯齿状数组类型属性

    假设我有这样的财产 public int MyProperty get set 调用代码可以自由更改数组的值 而且还可以替换数组本身 通过隐藏设置器可以轻松防止这种情况 如下所示 public int MyProperty get priv
  • 用c++例子解释Facade模式?

    我已经与维基百科文章 http en wikipedia org wiki Facade pattern 并且似乎缺少代码示例的 C 版本 如果没有这个我就无法完全理解 Facade 模式 你能用 C 帮我解释一下吗 外观模式 为复杂的子系
  • 如何将标签添加到 Bootstrap 对话框页脚

    需要添加bootstrap页脚上的标签bootstrap3 dialog 根据本教程 http nakupanda github io bootstrap3 dialog 只能在页脚区域添加按钮 BootstrapDialog show t
  • NPM:找不到模块“uuid”

    当我尝试使用 npm 时 我收到此消息 gt npm module js 472 throw err Error Cannot found module uuid at Function Module resolveFilename mod
  • C# 中的多客户端/服务器聊天程序?

    客户将能够一对一和群组聊天 温和的房间 类似于 Skype 我将使用服务器来授权客户端 我的问题是哪个更好 WCF 或 TCPClient StreamReader 和 StreamWriter cheesr 我还没有使用过 WCF 但我可
  • 如何从 Grails 控制器和视图外部引用 Grails 域类字段?

    我有域类 class Child static hasMany toys Toy String name Set toys class Toy static belongsTo owner Child String name 在我的 JSP
  • 根据部分字符串选择数组键

    我有一个数组 在该数组中我有一个数组键 如下所示 show me 160该数组键可能会发生一些变化 因此有时页面可能会加载 并且数组键可能会发生变化show me 120 我想现在可以只字符串匹配数组键直到最后一个 这样我就可以检查最后一个
  • 从其他文档追加子元素

    在我的程序中 我必须创建一些文档创建器 并且我想将创建元素的功能拆分为多个类 每个类将创建一个元素 主要创建者将通过接口提取该元素并将其附加到主体 问题是我不想将任何参数传递给构造函数调用 例如 creator createDocument
  • window.URL.createObjectURL(blob);在我的应用程序中未定义

    我仅在我的应用程序中遇到此问题 与浏览器 IE 和 Chrome 无关 如果我检查window URL createObjectURL blob 在两个浏览器中任何其他页面的控制台中 其工作正常 但它window URL createObj
  • IntelliJ IDEA 在 JPQL 中突出显示带有“无法解析符号”的 @Entity 类名称

    IntelliJ IDEA 在 JPQL 中用红色突出显示持久的 Entity 类名称 无法解析符号 这会分散注意力并埋葬真正的问题 因此 例如 我在存储库中声明一个查询 private static final String READ B
  • Java 石头剪刀布游戏 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我是编程新手 我正在尝试用 Java 编写一个非常简单的石头剪刀布游戏 它将编译并运行良好 但我希望说一些类似 无效的移动 再试一次
  • Python ABC 多重继承

    我认为代码比我用文字能更好地解释问题 这是 my abc py 中的代码 from abc import ABCMeta abstractmethod class MyABC object metaclass ABCMeta abstrac
  • 在 bot 目录中注册后,是否可以在 Microsoft Teams 或 Skype 中测试我的 Bot 应用程序但无需发布它?

    我已在 MS Bot 目录中注册了我的机器人应用程序 我可以使用 Bot Framework Emulator 与我的消息端点进行通信 但当我在 MS 团队和 Skype 中尝试同样的操作时 机器人没有回复我的消息 是的 这是可能的 你需要
  • 没有这样的文件来加载 active_record/associations/has_and_belongs_to_many_association

    我在 Gemfile 中添加了composite primary keys gem 在本地环境中它运行良好 但在 centos 机器上它会出现以下错误 在这两个环境中 Ruby 版本为 1 9 2p290 rubygems 版本为 1 3
  • 线段树数组 2 * 2 ^(ceil(log(n))) - 1 的内存如何?

    链接 http www geeksforgeeks org segment tree set 1 sum of given range http www geeksforgeeks org segment tree set 1 sum of
  • bash: ./eclipse: 无法执行二进制文件

    我正在使用 Ubuntu10 10 操作系统 并且我已经下载了 eclipse jee helios SR1 linux gtk x86 64 tar gz 我的电脑是64位机 当我解压 Eclipse 并尝试运行时 eclipse从命令行
  • 为什么这种随机生成图的方式不公平?

    我的目标是生成一个由 n 个顶点组成的有向图 使得每个顶点都有一条出边和一条入边 我认为实现此目的的一种方法是将所有顶点放入一个罐中 并让顶点轮流洗牌并拉出条目 例如 如果顶点 1 拉出顶点 3 则意味着将有一条从 1 到 3 的边 如果一
  • Android Activity启动模式和深层链接问题

    我的应用程序有 2 个活动 应用程序的根 Activity 是 MainActivity 如果凭据丢失或无效 用户将在完成 MainActivity 时重定向到 LoginActivity 如果我将主活动的启动模式设置为 singleTas