Android - 活动生命周期

时间:2011-08-24 12:25:52

标签: android android-activity lifecycle

让我们想象这个应用程序就像封闭的图像。 R代表Root活动,A和B代表其他活动。 A用于显示某些列表,B代表显示某些值的详细信息。从R我可以通过4个按钮到4个A活动。我的问题是,在这种情况下,是否每次初始化A活动,或者我将在整个应用程序中仅使用一个A活动。如果用户在右上角活动A中选择A,则显示详细信息B,然后从详细信息B转到另一个列表(但基于A活动)。他是否仍会从第一个A获得相同的内容,或者他可以在另一个列表中获得“新”A活动?

这就是重点 - 我将说出数百个活动。很多都是显示某些内容的“表单”,应用程序将有大约50种这些表单的变体。我可以为每个表单制作一个活动,在我的活动中再次重复使用它,而不必过去使用此活动吗?

Activites example

2 个答案:

答案 0 :(得分:2)

如果您想要活动类的单个实例

,请在清单中使用android:launchMode="singleInstance"

答案 1 :(得分:2)

默认情况下,每次通过调用startActivity()打开活动时,活动都会重新开始。如果您的活动开始新活动,它将基本上放在活动堆栈上,并在新活动开始时暂停。如果用户按下后退按钮,堆栈上的最后一个活动将在停止时恢复(尽管我不认为这是100%保证,因为Android会因为需要资源而终止任务,所以我不会假设它)

所以如果你在这里有这个链:

A->B->C->D

其中每个字母代表一个绝对没有标记或更改的新活动。

如果用户位于D并按下back按钮,C将会恢复。从堆栈中弹出D。如果用户决定再次转到活动D,则新的D将启动,就好像它没有发生一样(假设您没有保存任何持久变量)。如果用户按下back两次,则应用程序将位于B,其中CD没有消失。

您可以使用singleInstance等各种标志来操纵此链以保持其状态,或noHistory以确保它不会被放入堆栈(这意味着如果用户按下{将会跳过它{1}})。

Very detailed description of the various attributes

相关问题