拥有一个 Activity 实例

2024-03-22

我的活动导航和返回堆栈有问题,我希望您能为我解决这个问题。

问题

根 Activity >>> SecondActivity >> HomeButton

然后,这将带我进入主页,然后我从那里选择...

Gmail >> 消息 >> 在我的应用程序中打开附件 >> ImportActivity >> RootActivity

结果是一个新任务正在启动,并且我的应用程序的另一个实例正在使用。这是不可接受的,因为我不想运行两个单独的任务,我只想要一个。

期望的结果

我想要发生的是当用户打开附件并且导入活动完成它正在做的事情(它有android:noHistory设置为 true)并调用startActivity(intent), RootActivity已启动,但在原始任务中仅保留一个实例和其上的其余活动(在本例中SecondActivity)被删除。

我想要这个的原因是,如果用户在导入文件后导航出我的应用程序,然后触摸应用程序图标,它会使用其后堆栈加载第一个任务,并且我正在运行两个任务,其中用户可以处于两个不同的部分我立即申请。

我尝试过的

我已经尝试过启动模式,但它们都没有真正为我提供我需要的功能。

我尝试过的启动模式..

android:launchMode="singleTask"- 每次启动时,这都会再次启动根活动。即使用户按下我的应用程序内的主页按钮并触摸应用程序图标,后堆栈也会被破坏。

android:launchMode="singleInstance= 不允许任务中运行任何其他活动。

另外,当调用意图启动时RootActivity我已经使用了以下内容,但没有效果。

Intent i = new Intent(ImportActivity.this,TrackingActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);

可以做我想做的事吗?

提前致谢


You say

Gmail >> Message >> Open attachment in my application >> ImportActivity >> RootActivity

但这可能是不对的。在这种情况下,gmail 将发出Intent针对ImportActivity在你的应用程序中。ImportActivity将执行。然而,我读到的https://developer.android.com/guide/components/tasks-and-back-stack.html https://developer.android.com/guide/components/tasks-and-back-stack.html建议ImportActivity将作为与 gmail 相同的任务的一部分执行,并将被放置在 gmail 任务的返回堆栈顶部,除非您在清单中采取特殊步骤来阻止该操作,或者 gmail 专门将其作为单独的任务调用。什么时候ImportActivity完成,它不应该调用startActivity(intentForRootActivity)但应该打电话finish()这样它就会被销毁,并且位于后台堆栈中位于其下方的 gmail 的活动将会出现。

If ImportActivity打过电话startActivity(intentForRootActivity) then RootActivity只会进入 gmail 任务的顶部并出现在 gmail 后堆栈上。接触home然后 Gmail 的启动器图标就会出现RootActivity重新出现,将 Gmail 隐藏在下面。

我想你需要android:launchMode="standard"在清单声明中ImportActivity.

代表应用程序较旧的独立实例的任务将不会被修改。如果有人触摸您的应用程序的启动器图标,您的应用程序的旧状态将被恢复,不受 Gmail 任务中发生的任何情况的影响。

该文件http://developer.android.com/guide/components/processes-and-threads.html http://developer.android.com/guide/components/processes-and-threads.html关于活动如何映射到此处的进程相当模糊(导致 David Wasser 对此答案的早期版本发表评论),但似乎 gmail 的活动将在一个具有一个 Linux 用户 ID 的 Linux 进程中执行,并且ImportActivity将在另一个具有另一个用户 ID 的 Linux 进程中执行。但是,它们都可以构成具有一个返回堆栈的一项任务的一部分。

ImportActivity作为 gmail 任务的一部分,将使用与作为独立应用程序的一部分执行相同的有效 Linux 用户 ID 来执行 - 并且与 gmail 执行时使用的 Linux 用户 ID 不同。这听起来不太可能且复杂,但似乎暗示https://developer.android.com/guide/components/fundamentals.html https://developer.android.com/guide/components/fundamentals.html。这就说得通了;如果ImportActivity例如,需要获取为您的应用程序存储的用户首选项,它需要读取首选项文件,就好像它是为您的应用程序定义的用户,而不是为 gmail 定义的用户一样。

我还没有尝试执行任何这些。如果我完全搞错了方向,我相信很快就会有人告诉我们!

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

拥有一个 Activity 实例 的相关文章

随机推荐

  • 在 Visual Studio C++ 项目中在哪里输入 DLL 依赖项?

    我正在将一些在 Linux 和 Mac 上运行的 Qt 项目文件 pro 转换为 Visual Studio 项目文件 vcproj Qt Visual Studio 加载项可以很好地转换除 DLL 依赖项之外的所有内容 我应该将它们放在
  • 关于变量/函数命名约定的思考

    我一生都在断断续续地编码 我主要编写 Perl 代码 但也编写一些 Java PHP C C 我什至尝试过 Emacs Lisp 并且偶尔也编写过 shell 脚本 然而 我从来没有真正参与这个主题来获得任何专业知识 其他事情对我来说有更高
  • Android 从 java 代码设置文本视图颜色

    我有一个列表 并为此编写了一个自定义适配器 我想为此设置一些文本颜色 例如橙色代码 F06D2F 我正在展示我的代码片段getView method TextView text new TextView this context text
  • 获取单元测试时引用项目的路径

    我正在尝试使用单元测试来测试我的 ASP Net Web 应用程序中的类的功能 此类从硬盘驱动器加载一些文件 以执行 xsl 转换 Xsl GetXSLFromFile AppDomain CurrentDomain BaseDirecto
  • 如何在 Java 中解析 EDIFACT? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 解析 EDIFACT 可能是一项艰巨的任务 如何从 EDIFACT 文件正确创建语法和语义正确的树 ww
  • for 循环的增长顺序复杂

    对于以下代码片段 N 的增长顺序是多少 int sum 0 for int i 1 i lt N i i 2 for int j 1 j lt N j j 2 for int k 1 k lt i k sum 我发现有 lgN 项 但我一直
  • 什么是过度获取或不足获取?

    我有时会玩 graphQL 在 graphQL 之前 我们通常使用 REST API 许多开发者表示 graphQL 修复了 REST 的一些问题 例如过度获取和不足获取 我对这个术语感到困惑 有人可以解释一下在这种情况下什么是过度获取和不
  • 如何不经过身份验证直接向 SMTP 服务器发送邮件?

    我想通过直接连接到将电子邮件直接从脚本发送到 Gmail 电子邮件帐户smtp gmail com 但是 我不希望脚本中包含 gmail 密码 据我所知 Gmail 似乎需要身份验证才能发送任何邮件 包括发送给自己的用户 我的问题是 来自另
  • TFS 远程用户... SSL + 密码还是 VPN?

    我目前的任务是为客户端设置 TFS 服务器 TFS将主要由本地 现场 用户通过内部网络访问 简单 但是我们拥有的少数远程用户怎么办 他们应该通过 VPN 连接还是最好将 TFS 服务器公开并让用户通过 SSL 连接并向 TFS 提供用户名和
  • 使用 TWIG Markdown 转义 HTML 代码

    我正在开发一个博客评论包 我想让用户使用 Markdown 发布一些代码 我正在使用 symfony2 TWIG 和KNP Markdown 捆绑包 https github com KnpLabs KnpMarkdownBundle用于解
  • 在 TypeScript 项目中使用 Path2D 未解决

    我想用新的Path2D https developer mozilla org en US docs Web API Path2D Path2Dapi 在 TypeScript 项目中 但我在 lib es6 d ts 中没有看到它 使用它
  • 还有其他方法可以调整 Blockly 工作区的大小吗?

    我正在努力适应我的Blockly workspace在 div 内 我希望如果页面变小 div 和Blockly workspace它的内部也会更小 我知道有一种方法可以Google在其规定的文档 https developers goog
  • 如何解析 ISO8601 日期 [重复]

    这个问题在这里已经有答案了 我得到了关于这种格式的日期字符串 2011 12 29T09 09 06 0500 如何将其转换为日期对象 尝试这个解决方案 NSString dateString 2011 12 29T09 09 06 050
  • 坐标三角学 - 计算飞行路径弧线的中点

    我正在尝试使用 SVG 在地图上绘制飞行路径 我在 Leaflet 之上使用 d3 但所使用的框架不应该对我的问题产生影响 这是三角函数 http fiddle jshell net zw8TR 26 http fiddle jshell
  • 在没有 Socket.io 的 Backbone.js 应用程序中使用 websockets

    我是 Backbone 的新手 我正在尝试构建一个 Backbone 应用程序来实时绘制和映射数据 我实现了一个 websocket 以下this https github com andrewvc d3 backbone presenta
  • 我可以在 Sql Server 中对一组数字执行按位与运算吗?

    我有一个安全表 其中包含组和用户的列表 每个组和用户都有按位整数权限 对于每个给定的用户 我想对其所有组及其个人权限记录 如果存在 执行按位 AND 操作 当然 我可以轻松地在代码中执行此操作 但我宁愿在数据库中执行此操作 因为我正在查询权
  • 在 Python 中保存 VTK 中的数据数组

    Question 如何从 Python 中的 VTK 中提取数据集数组并将其保存在新文件中 e g 对于具有幅度数据集的 VTKforce 移位 and current仅提取移位并将其保存在较小的文件中 Problem 我在远程服务器上有数
  • Azure BLOB 存储虚拟请求

    I see strange requests when uploading blobs to storage The only methods I use is PutBlob and SetBlobTier But metrics sho
  • Firebase 3.0.1 Web API 查询不起作用,出现 iFrame 安全错误

    我做了一个简单的调用ref once value callback 回调从未被调用 相反 我在 Chrome 控制台中收到此错误 Refused to display https console firebase google com pr
  • 拥有一个 Activity 实例

    我的活动导航和返回堆栈有问题 我希望您能为我解决这个问题 问题 根 Activity gt gt gt SecondActivity gt gt HomeButton 然后 这将带我进入主页 然后我从那里选择 Gmail gt gt 消息