在Android中重复使用的活动的标准是什么

时间:2014-01-17 09:31:15

标签: android android-activity

通过定义Extras,我可以重复使用不同数据的活动。例如,遍历数据层次结构。假设活动是A和B,括号中有额外的内容。

所以在应用程序中我导航A(1),A(2),A(3),B(1),A(1)

如果重用原始类A(1)而不是创建新实例,可以这样做,因为此时它每次都在重新创建一个新实例。

我一直在查看启动标志,但没有找到正确的组合(如果有的话)。

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