当我阅读android官方文档时,我注意到Android系统是按任务来管理活动的,但它也使用后台堆栈来控制activity sequence.So。我怀疑的是,android系统是使用单个后台堆栈来控制活动序列,还是每个任务对应一个后台堆栈?
发布于 2013-06-07 14:08:02
任务仅仅是应用程序的所有实例化活动的集合。
例如:
如果我们有包含活动A1、A2和A3的应用程序A,并且A2在A1之后打开,A3在A2之后打开,则应用程序A的任务将如下所示:
|A3|
|A2|
|A1|
现在,如果我们按下back按钮,A3将被弹出,而A2将被显示给用户。应用程序A的任务现在如下所示:
|A2|
|A1|
如果我们按back直到所有的活动都消失,那么任务将被丢弃,下一次我们启动应用程序A时,Android将创建一个新任务,并将应用程序A的主活动作为第一个活动。
现在,让我们以相同的顺序再次打开A1、A2和A3。应用程序A的任务现在返回到:
|A3|
|A2|
|A1|
现在,假设我们按下主页按钮并启动另一个应用程序,应用程序B。这将导致应用程序A的整个任务保留在后台,并为应用程序B创建一个新任务,并实例化它的主要活动。所以现在我们的情况看起来像这样:
Application A Application B
|A3| |B1|
|A2|
|A1|
如果我们在应用程序B中打开更多活动,它们将被添加到它的任务中,就像应用程序A一样:
Application A Application B
|A3| |B3|
|A2| |B2|
|A1| |B1|
现在,如果我们切换回应用程序A,我们将把A的任务带到前台,而B的任务将保留在后台。
同一任务中还可以存在同一活动的多个实例。此行为can be controlled。
如果系统内存不足,它将开始在后台终止活动。如果一个任务的所有活动都消失了,那么该任务也将被销毁。(更新:根据Dianne Hackborn的this answer,被丢弃的不是单个活动,而是整个过程。文档在这方面可能有点误导,混乱还没有解决。当我得到更多可靠的信息时,我会更新它。)
因此,总而言之,任务就是应用程序活动的集合。它用于维护应用程序的所有实例化活动的“栈”或“后栈”。当应用程序的所有活动都在后台时,它会被保留在后台。当这些活动之一被带回前台时,该任务也被带回,并且当前活动的任务被推送到后台。如果系统需要内存,则可以销毁后台活动和任务。
官方文档提供了更多信息,我建议阅读它们:
http://developer.android.com/guide/components/tasks-and-back-stack.html
发布于 2014-06-10 19:26:18
android官方文档是这样写的:
任务是用户在执行特定作业时与之交互的活动的集合。这些活动按照每个活动打开的顺序排列在一个堆栈(“后台堆栈”)中。
我同意这很令人困惑。然而,一遍又一遍地阅读整个文档,它就变得清晰了。
任务使用后台堆栈管理活动。除了一些其他信息和/或数据之外,每个任务都有其自己的后端堆栈。任务使用它的后台堆栈来管理活动。
如果我说错了,请纠正我。
发布于 2013-06-07 11:02:55
我真的不明白你想要做什么,但是系统中的活动是作为一个活动堆栈来管理的。当启动一个新的活动时,它被放在堆栈的顶部,并成为正在运行的活动。前一个活动在堆栈中始终保持在它的下方,并且在新活动退出之前不会再次出现在前台。
https://stackoverflow.com/questions/16975485
复制相似问题