Android中FLAG_ACTIVITY_SINGLE_TOP的含义

6
在意图中,我可以设置FLAG_ACTIVITY_SINGLE_TOP标志。有人能解释一下它的含义吗?因为我不太明白。=)
2个回答

19

任务页面上说对于 single top 模式:

如果在当前任务的顶部已经存在一个活动实例,系统会通过调用其 onNewIntent() 方法将意图路由到该实例,而不是创建一个新的活动实例。该活动可以被多次实例化,每个实例可以属于不同的任务,并且一个任务可以有多个实例(但前提是返回栈顶部的活动不是该活动的现有实例)。

例如,假设任务的返回栈由根活动 A,以及位于其之上的 B、C 和 D 活动组成(栈为 A-B-C-D;D 位于栈顶)。到达一个类型为 D 的活动意图。如果 D 具有默认的“standard”启动模式,则会启动类的一个新实例,栈变为 A-B-C-D-D。然而,如果 D 的启动模式为“singleTop”,则通过 onNewIntnet() 将该意图交付给 D 的现有实例,因为它位于栈顶。栈仍然是A-B-C-D。但是,如果到达一个类型为 B 的活动意图,则无论其启动模式是否为“singleTop”,都会向堆栈中添加 B 的一个新实例。


0

Javadoc说:

If set, the activity will not be launched if it is already running at the top of 
the history stack.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接