android 中的 singleTask launchMode 不起作用

2024-04-03

所以,我有 4 项活动 活动Activity1, Activity2, Activity3 and Activity4。我从Activity1然后在某个事件中我开始Activity2然后在某个事件上Activity2我开始Activity3作为一个新任务

public void onClick(View v) {
    Intent intent = new Intent(Activity2.this, Activity3.class);
    intent.setFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK|Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(intent);
}

Here Activity2launchMode 被声明为 singleTask。

然后我从Activity3 to Activity4

当我开始时Activity2 from Activity4我相信它应该有像这样的backstack

Task A

|活动2|

|活动1|

Task B

|活动4|

|活动3|

as shown in image belowenter image description here

而是新的实例Activity2添加到当前任务中

Task B

|活动2|

|活动4|

|活动3|

Task A

|活动2|

|活动1|

有人可以帮我理解这一点吗?


Android 不会创建新任务,除非taskAffinity of the Activity您尝试启动的启动与taskAffinity当前任务的。taskAffinity优先于其他任何事情。

如果您确实想开始一项单独的任务,则需要调整taskAffinity of the Activity3像这样:

<activity android:name=".Activity3"
          android:taskAffinity=""/>

另外,尽管Activity4声明为launchMode="singleTask",Android不会为其创建新任务,除非有不同的任务taskAffinity来自其他活动。

请注意,为同一应用程序创建多个任务会产生很多副作用。您应该为根提供一个 uniqyue 图标和一个唯一标签Activity在每个任务中,否则当用户想要返回到您的应用程序时,他会感到困惑(他将无法确定各个任务中哪一个是正确的)。还,taskReparenting可能会发生意外地将活动从一项任务转移到另一项任务的情况。这些都是非常复杂的东西,大多数开发人员并不完全理解它,因此会出错。

另外,使用FLAG_ACTIVITY_MULTIPLE_TASK肯定是错误的。唯一需要使用它的应用程序类型是启动器。如果您使用相同的任务启动多个任务Activity在其中,您将永远无法以编程方式返回到特定的一个,并且将完全迷惑您的用户。这绝对不是你想要的。

在大多数情况下,您不需要多个任务,它通常会导致比它解决的问题更多的问题。请解释为什么您认为您需要多项任务。

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

android 中的 singleTask launchMode 不起作用 的相关文章

随机推荐

  • 为什么我会在 .NET 的 StartsWith 中看到这种意外行为?

    这一定是一个 NET 错误 对吧 KonNy StartsWith Kon 返回 false 同时 KonNy StartsWith Ko and KonN StartsWith Kon 返回真 我在这里缺少什么吗 重复评论 我不太了解 N
  • 使用 fql 检查 Facebook 用户是否喜欢某个页面

    我想检查登录用户是否喜欢指定的页面 下面是我的代码 fql pageid SELECT url site id FROM object url WHERE url IN http developers facebook com api pa
  • 将本地分支合并到远程分支而不是master?

    我有一个本地分支 A 但远程存储库中尚不存在 我在远程仓库中还有一个远程分支 B 如何将本地更改合并到远程分支 如果分支 B 在本地 您可以在本地合并 A 到 B 然后将 B 推送到远程 git checkout B git merge A
  • ASP.NET 中的简单 Web 部件显示为空白页

    我正在尝试开发 Web 部件VS 2008 WinXP 我创建了一个网站项目 并在默认表单中添加了几个 Web 部件default aspx
  • 无法通过curl访问github

    尝试使用以下命令访问 github 失败 并出现验证失败错误 我应该怎么做才能解决这个问题 C software curl 7 23 1 win64 ssl sspi gt curl i https api github com curl
  • 在 Bash 中分割逗号分隔的字符串

    我有这个文件 里面有 20k IP 104 20 15 220 104 20 61 219 104 20 62 219 104 20 73 221 104 20 74 221 104 20 14 220 104 20 15 220 104
  • C# 奇怪的 WPF 组合框行为

    I have simple window This is what happens when I click ComboBox List appears in upper left corner of screen instead of u
  • 构建 Erlang 服务器场(用于业余爱好项目)最便宜的方法是什么? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 假设我们有一个 本质上并行 的问题需要用 Erlang 软件来解决 我们有很多并行进程 每个进程都执行顺序代码 不是数字运算 并且我们向它们投入的 C
  • C++ 元编程中的 typedef 与公共继承

    免责声明 这个问题与继承而不是 typedef https stackoverflow com questions 441744 inheritance instead of typedef到目前为止我找不到任何类似的问题 我喜欢玩 C 模
  • 在 iPhone 中显示图库中的图像

    我是 iPhone 新手 现在正处于学习阶段 实际上我想实现读取存储在 iPhone PHOTO Gallery 中的图像 然后将其显示到我的应用程序上 我在很多搜索引擎中进行了搜索 但找不到任何东西 你们这里都是专业人士 请指导我完成一些
  • 使用 PHP 反向抓取图像

    我需要使用 google 反向图像搜索来获取一些图像 API 不支持该搜索 但幸运的是 您可以通过图像的直接链接查询 google 它仍然显示结果 因此 googleURL https www google com searchbyimag
  • 我应该使用哪个版本的 iOS SDK?

    请告诉我应该使用哪个版本的 iOS SDK 以便我的应用程序可以在 iPhone 3 0 或更高版本上运行 您应该注意两个不同的概念 基础 SDK 这是您用来构建应用程序的内容 最新版本是 4 2 因此您应该使用它来构建您的应用程序 iOS
  • 自动在输入框中填写数据

    我有四个输入框 如果用户填充第一个框并单击按钮 那么它应该使用用户在第一个框中输入的值自动填充剩余的输入框 可以使用javascript来完成吗 或者我应该说用用户输入的最后数据预先填充文本框 单击按钮时 调用此函数 function fi
  • 为什么“notifyDatasetChanged()”不通知所有可见项目?

    背景 注意 我已经使用listViews很多年了 所以我非常熟悉如何使用适配器 ViewHolders等 所以这个问题对我来说没有意义 这次我遇到了一个非常奇怪的行为 由于某种原因只发生在 2 台设备上 LG G2 搭载 Android 4
  • 即使图像没有改变,如何更新数据库记录

    我使用 localDB 作为我的数据库 我有一个员工表 员工图像存储在另一个表中 这是我用于创建和更新的存储过程 IF NOT EXISTS SELECT FROM dbo Employee WHERE employee id employ
  • 如何以 PDF 格式呈现 ASP.NET MVC 视图

    我正在使用 ExpertPDF 的 Html to PDF 转换实用程序来解决这个问题 尽管如果有足够的文档 我也愿意接受其他库 简而言之 我有一个以特定方式格式化的视图 我想将其呈现为用户可以保存到磁盘的 PDF 文档 到目前为止 我拥有
  • 在我的 Angular JS 单元测试中,我什么时候应该使用 $provide 还是 Jasmine Spies

    我在开发一个大型 Angular 应用程序 最初我们通过使用 provide 来模拟服务来完成大量测试 然而 我们现在在测试中有很多 Jasmine Spies 以便对服务进行存根和监视 i e spyOn myService myMeth
  • 有没有办法取消注册套接字通道上的选择器

    这是一个非常简单的问题 但我发现需要注销一个俯瞰我的 java 套接字通道的选择器 SocketChannel client myServer accept forks off another client socket client co
  • 不可编辑的 JComboBox 中所选项目的背景颜色

    不可编辑的 JComboBox 中所选项目的背景颜色是一种蓝色 有什么办法让它变成不同的颜色 例如白色吗 这应该有效 jComboBox1 setRenderer new DefaultListCellRenderer Override p
  • android 中的 singleTask launchMode 不起作用

    所以 我有 4 项活动 活动Activity1 Activity2 Activity3 and Activity4 我从Activity1然后在某个事件中我开始Activity2然后在某个事件上Activity2我开始Activity3作为