大佬教程收集整理的这篇文章主要介绍了android – 具有singleTask启动模式的活动及其在后台堆栈中的位置,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
首先,有以下声明:
然后描述了singleTask启动模式,有以下声明:
好吧,如果我理解正确的话,singleTask活动只能是他们任务的根源,因为它们是以这种方式创建的,并且活动永远不会在后台堆栈中交换位置.但是这样的活动如何在接收对onNewIntent()方法的调用时做出反应呢?
因此,该指南指出,调用singleTask活动会以某种方式使其前进.但是,如果这项活动不是最重要的,那怎么可能呢?活动是否已恢复,或者只是在没有向用户显示的情况下接收对其onNewIntent()方法的调用?我真的不明白.
PS:一年多前已经问过几乎相同的question,但没有给出正确答案.因此,虽然从技术上讲,我的问题是重复的,但我觉得有必要重新提出它,因为它确实值得一个明确而明确的答案.
首先,
这实际上是错误的.通常,堆栈中的活动永远不会重新排列,但您可以使用Intent.FLAG_ACTIVITY_REORDER_TO_FRONT将现有活动从堆栈中的其他位置带到前面.例如,您的活动堆栈如下所示:A-> B-> C-> D其中a是根活动(位于堆栈底部),D是前景中最顶层的活动(是示出).如果D现在这样做:
Intent intent = new Intent(this,B.class); intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); startActivity(intent);
这会将活动B的现有实例移动到任务的前面,这样它就不会显示在屏幕上.活动堆栈现在看起来像这样:A-> C-> D-> B.
接下来你问这个:
好吧,并且活动永远不会在后台堆栈中交换位置.但是这样的活动如何在接收对onNewIntent()方法的调用时做出反应呢?
通常,singleTask活动是其任务的根.如果已经有一个现有任务激活了singleTask活动,并且您使用startActivity()启动了这样的活动,那么该任务将被提前(以便在屏幕上显示)并且onNewIntent()将在该活动的现有实例.但是,如果singleTask活动已在其任务中启动了其他活动,则所有其他活动都将完成(即:任务被剥离回其根Activity)BEFORE onNewIntent()将在现有的singleTask活动实例上调用.
有些情况下,singleTask活动不是其任务的根,然后所有的投注都是关闭的(即:行为不是记录的).如果singleTask活动与应用程序中已在任务中处于活动状态的其他活动具有相同的taskAffinity,则会发生这种情况.在这种情况下,Android会忽略singleTask启动模式,并将活动视为具有标准启动模式.
以上是大佬教程为你收集整理的android – 具有singleTask启动模式的活动及其在后台堆栈中的位置全部内容,希望文章能够帮你解决android – 具有singleTask启动模式的活动及其在后台堆栈中的位置所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。