首页 > 试题广场 >

现有Activity:A、B、C、D,启动顺序是A-B-

[问答题]

现有ActivityABCD,启动顺序是A->B->C->D.现在需要从D直接回到A,并关闭D,请简述你的设计方案

通过题意,直接回到A 表明还是回到之前的那个实例A 所以这种情况下可以把A的启动模式设置为SingleTask模式,这种模式使得A只有一个单例模式,在通过在D中启动A,并且在启动之后结束D的生命周期,便可通过D直接跳到A并且关闭D。
发表于 2017-01-22 21:52:37 回复(0)
取决于此时系统是否允许在打开A、关闭D的同时关闭B、C:
(1)如果允许的话,只需要将A的启动模式设置为singleTask,当在D中去启动A的时候,系统会去返回栈中检查是否已经存在A活动的实例了,此时发现A实例已经存在,会直接使用该实例,并将该活动之上的所有活动全部出栈,也就是B、C、D全部出栈了,所以不用专门去finish活动D;
(2)如果不允许,则将A的启动模式设置为singleTop,从D中启动A后将D finish掉,此时系统发现A不在返回栈栈顶,会创建一个新的A实例,而B、C继续留在返回栈。
个人浅见、有错望指出。

发表于 2017-08-26 13:58:02 回复(0)
更改启动模式为singletask,当需要启动D时,系统扫描全栈,自动将ABC出栈,D就成了栈顶了!
发表于 2017-03-25 23:47:41 回复(0)
intent.setFlag参数加上clearTop就完事了
发表于 2020-07-04 19:01:47 回复(0)
建立一个activitycollector,收集除了A以外的activity,然后重写d的back键监听方法,使用关掉收集的activity
发表于 2017-03-08 08:14:02 回复(1)
B和C在startActivity()之后finish就可以吧
发表于 2017-02-10 11:50:45 回复(0)