- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我一直在阅读关于启动模式的文档,有一件事我不明白。doc表示单任务活动始终是堆栈的根:
相反,“singletask”和“singleinstance”活动只能
开始一项任务。它们始终位于活动堆栈的根。
此外,设备在
时间-只有一个这样的任务。
但是:如果您查看位于this的doc的Figure 4部分,您会看到当活动2启动活动y(将该任务置于前台)时,活动y已经位于任务的顶部,并且将位于当前任务的顶部,而不是根。
我在simulation app中尝试了这个场景,当我创建singletask活动时,它总是创建一个新任务。但是,如果唯一的实例已经存在,它将完成此实例之上的所有活动,因此唯一的实例可以是根(也是任务中的唯一活动)。
活动y如何成为活动x上方任务的顶部?
我失踪还有其他原因吗?
注:我也不太明白任务和后堆栈之间的区别。
最佳答案
像往常一样(叹气),文件是错误的。在您引用的图表中,显然活动y不能定义为singleTask
,而是包含两个活动的后台任务中的顶级活动。
在测试特殊发射模式singleTask
和singleInstance
的场景时,请注意taskAffinity
在这种行为中起着重要作用,因为taskAffinity
优先于特殊发射模式。
关于“任务”和“后堆栈”之间的区别:
“任务”是一堆可以作为一个整体进行操作的活动。
当您启动一个应用程序(假设它当前没有运行)时,android会在前台创建一个新任务,其中包含您启动的应用程序的根活动。
当该活动启动新活动时,这些新活动将添加到当前任务中(通常,尽管此行为有例外)。
按“开始”按钮时,当前任务将从前景移到背景。
显示“最近”列表时,显示的是最近的任务列表,而不是最近的活动列表或最近的应用程序列表。
从最近任务列表中选择任务时,如果该任务仍处于活动状态(其中仍有活动),则整个任务(包括其所有活动)将从后台转到前台。
任务也可以“堆叠”。当当前任务中的活动启动新任务中的活动时,新任务将堆叠在当前任务的顶部。这只用于控制新任务完成时发生的事情。通常情况下,当新任务完成时(其所有活动都已完成),android会将用户返回到上一个任务(即:启动完成任务的任务)。
“back stack”通常指任务中的一组活动。每个任务都有自己的活动堆栈。这用于控制当前活动(位于后堆栈顶部的活动)完成时发生的事情。通常,android会将用户返回到位于后堆栈中finishing活动正下方的活动。
android代码和文档通常指任务的“根”(这是用于启动任务的活动)和任务的“顶”或“前”(这是当前显示的活动)。
实际上,文档是这样的:-(这里有一个例子:
相反,“singletask”和“singleinstance”活动只能
开始一项任务。
这种说法通常是正确的,但并不总是正确的。例如,假设我有两个活动:A
和B
。A
是发射活动(即:具有ACTION=MAIN
和CATEGORY=DEFAULT
的活动),用标准发射模式定义。B
用launchMode="singleTask"
定义。我启动应用程序,android创建一个A
实例。然后在A
中:
startActivity(new Intent(this, B.class));
B
的新实例,并将其放在同一任务中的
A
之上。它不会创建以activity
B
为根的新任务。原因是activity
A
和activity
B
具有相同的
taskAffinity
(默认情况下,应用程序的所有活动都具有相同的
taskAffinity
),在这种情况下,android将忽略
B
的启动模式。
taskAffinity
可以打破这种行为。再次假设我们有
A
,
B
和
C
,都有相同的(默认值)
taskAffinity
。
A
和
C
具有标准启动模式,
B
具有
launchMode="singleTask"
。如果
A
开始
B
,则
B
的实例不会在新任务中结束,而是在与
A
相同的任务中结束(参见上文)。现在
B
开始
C
。android创建一个
C
的实例,并将其放在同一任务中的
B
之上。现在
C
呼叫:
startActivity(new Intent(this, B.class));
B
实例,并将其放在任务中的
C
之上。现在有两个
B
实例,它们都不是任务的根活动!这种行为也是因为
taskAffinity
胜过发射模式。
关于android - android singleTask Activity 不作为root?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33943588/
我对 Android 很陌生,如果问题重复,请避免并发送链接。有三个 Activity A、B 和 C。 Activity A 获取一个用户名,我想在 Activity C 中显示该用户名,但我想先运
我正在尝试制作记事本应用程序,因此每次打开新笔记时,布局都会相同。另外, Activity 的数量(新注释)不应定义得尽可能多 最佳答案 如果 Activity 始终相同,您可能应该创建一个适配器,允
我有 3 个 Activity 。 主窗口 5 个按钮 在按钮的主窗口中按下此窗口打开(将其称为父窗口) 在父窗口按钮上按下此窗口打开调用它作为结束子窗口。 现在从子窗口我从父窗口获取值如下:
我遇到了一个 Activity backstack 问题。假设我的后台有 5 个 Activity :比如 Activity A、 Activity B、 Activity C、 Activity D
我正在寻找必须具有以下附加特征的 JMS 提供程序: 采用多代理,所有代理都必须处于事件状态(无单点故障) 仅在两台机器上进行扩展就足以满足我们的需求 能够保证订购(如果 1 个生产者 + 1 个消费
假设,我有一个由 TabHost 组成的选项卡 Activity 。 TabHost 包含 2 个选项卡,每两个选项卡都有一个 Activity 组。每个 Activity 组包含一项 Activit
我正在开发一个应用程序,我需要根据某些操作导航到特定 Activity 。这是一张图片 我的第一个 Activity 是 ReadingActivity。基于某些操作,用户将被带到 NewProjec
我创建了一个与服务器异步通信的应用程序。当应用程序发出服务器请求时,将创建一个带有“正在加载”通知的新对话框( Activity )。主要 Activity 实现了处理服务器响应的方法,我想在主要 A
我想在我的所有应用程序 Activity 中显示相同的选项菜单。我创建了一个实现菜单的通用 Activity ,并且我所有的进一步 Activity 都扩展了它。 问题:当我需要扩展其他特定 Acti
我有四个 Activity ,即 java 文件 - Activity1.java、activity2.java、activity3.java、activity4.java 和 xml 文件 - Ac
我有两个 Activity 。我想将数据从第二个 Activity 发送到上一个 Activity 。第一个 Activity 有自定义 ListView 和 bean 类。当我点击第二个 Activ
根 Activity 是堆栈中当前的第一个 Activity 还是 list 中指定为启动 Activity 的 Activity ? 支持应用程序 P 在启动时启动 Activity A。然后 A
你好 我想知道您在绘制 Activity 图选择“Activity ”时考虑了哪些关键点? 您如何从要建模的问题中选择 Activity ? 谢谢 最佳答案 Activity 图用于对正在开发的系统和
如何从主 Activity 启动 Activity 并在子 Activity 返回主 Activity 中退出操作后返回主 Activity ? 我已将子 Activity 作为启动器 Intent
我的工作流程如下: 登录 Activity -> ActivityB -> ActivityC -> ActivityD 我想将数据从LoginActivity传递到ActivityD,但不直接传递到
我之前曾尝试获得此问题的答案,但找不到可以解决我的问题的答案。我正在制作保存圆盘高尔夫球分数的应用程序。我的 MainActivity 有 4 个按钮。新比赛、恢复比赛、类(class)和球员。 At
我有一个 tts 非 UI 类和 Activity 类。现在在 Activity 类中,我有一个按钮,用户可以从中选择男声或女声,具体取决于我想要将字符串传递给 tts 类的选择,然后一次tts 类根
问题有点复杂,首先, Activity A 和 Activity B 的 list 中都有 android:noHistory = true 。我有一个自定义 serialized 类,假设 MyCl
在我的应用程序中,我有两个 Activity (AuthenticationActivity 和 MainActivity),每个 Activity 都有一个导航图和大量 fragment 。我创建了
这个问题在这里已经有了答案: 关闭 11 年前。 Possible Duplicate: How can i use compose email activity in tabView? 我想在选项
我是一名优秀的程序员,十分优秀!