我是Android开发的新手,所以请原谅我的无知。
我有两个活动,A +B。如果从A-> B出发,A会保留下来,并且不会被破坏。当我从B-> A返回时(使用“后退”按钮),活动A被销毁并再次创建,然后活动B被销毁。
我一直在寻找保留活动A的方法,因此当我返回B-> A时,A会像以前一样保留。我可以通过设置活动A launchMode来实现这一点android:launchMode="singleTop"
任何人都可以解释最初的行为吗?或至少引导我阅读一些材料?当我按回B时,为什么A被破坏了?
如果我想以android:launchMode="singleTop"
编程方式达到效果,我应该在B中捕获“ Back”调用并Intent
使用自己的标志创建自己的调用吗?
将launchMode设置为singleTop是实现我想要的正确方法吗?
你有点困惑。您描述的情况与“向上”导航的行为相匹配。在您的帖子中,您描述了使用“后退”按钮(设备上的硬件按钮)从B-> A前进的过程。但是根据您的描述,您必须谈论的是“顶部”按钮(屏幕顶部操作栏中的““>”软图标)。如果要让UP导航使用活动A的现有实例(而不是创建新实例),则需要在清单中为活动AlaunchMode="singleTop"
的<activity>
定义中进行设置。
有关此详细信息,请参见UP导航的文档。以下是相关内容的引文:
要在用户按下应用程序图标时向上导航,可以使用NavUtils类的静态方法
navigateUpFromSameTask()
。当您调用此方法时,它会完成当前活动并启动(或恢复)适当的父活动。如果目标父活动在任务的后退堆栈中,则将其转发。提出的方式取决于父活动是否能够处理onNewIntent()
呼叫:
- 如果父活动具有启动模式
<singleTop>
,或者up intent包含FLAG_ACTIVITY_CLEAR_TOP
,则将父活动带到堆栈的顶部,并通过其onNewIntent()
方法接收该intent 。- 如果父活动具有启动模式
<standard>
,并且up intent不包含FLAG_ACTIVITY_CLEAR_TOP
,则将父活动弹出堆栈,并在堆栈顶部创建该活动的新实例以接收该意图。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句