通过定义Extras,我可以重复使用不同数据的活动。例如,遍历数据层次结构。假设活动是A和B,括号中有额外的内容。
所以在应用程序中我导航A(1),A(2),A(3),B(1),A(1)
如果重用原始类A(1)而不是创建新实例,可以这样做,因为此时它每次都在重新创建一个新实例。
我一直在查看启动标志,但没有找到正确的组合(如果有的话)。
答案 0 :(得分:1)
阅读Task Launch Modes以了解如何控制新活动的实例化。看起来你所寻找的并不是严格可能的,因为它会产生一个非常混乱的回溯历史(从用户的角度来看)。
如果活动位于使用singleTop
的堆栈顶部,则可以重复使用该活动。 singleTask
也可以做你想做的事。
“singleTop”如果活动的实例已存在于顶部 当前任务,系统将意图路由到该实例 通过调用它的onNewIntent()方法,而不是创建一个新的 活动的实例。活动可以实例化多个 每次,每个实例都可以属于不同的任务,一个任务就可以 有多个实例(但只有当活动位于顶部时) 后台堆栈不是活动的现有实例)。例如, 假设任务的后台堆栈由根活动A组成 活动B,C和D在顶部(堆栈是A-B-C-D; D在顶部)。一个 意图到达D类活动。如果D有默认值 “标准”启动模式,启动了该类的新实例 堆栈变为A-B-C-D-D。但是,如果D的发射模式是 “singleTop”,D的现有实例接收意图 onNewIntent(),因为它位于堆栈的顶部 - 堆栈仍然存在 A B C D。但是,如果意图到达B类活动,那么 即使其启动模式为,也会将新的B实例添加到堆栈中 “singleTop”。
注意:创建活动的新实例时,用户可以 按“返回”按钮返回上一个活动。但当一个 现有的活动实例处理新的意图,用户不能 按“返回”按钮返回之前的活动状态 新意图到达onNewIntent()。
“singleTask”系统会创建一个新任务并实例化 活动在新任务的根源。但是,如果是一个实例 活动已经存在于一个单独的任务中,系统路由了 通过调用onNewIntent()来实现对现有实例的意图 方法,而不是创建新实例。只有一个实例 活动可以一次存在。注意:虽然活动开始于 新任务,后退按钮仍然将用户返回到上一个 活性。
来源:http://developer.android.com/guide/components/tasks-and-back-stack.html#TaskLaunchModes