当我阅读android官方文档时,我注意到Android系统按任务管理活动,但它也使用后台堆栈来控制活动序列.所以我怀疑是android系统是否使用单个后栈来控制活动序列或者每个任务对应一个后栈?
Anu*_*kur 17
任务只是应用程序的所有实例化活动的集合.
例如:
如果我们有应用程序A的活动A1,A2和A3和A2在A1之后打开,A3打开后,应用程序A的任务将如下所示:
|A3|
|A2|
|A1|
Run Code Online (Sandbox Code Playgroud)
现在,如果按下后退按钮,A3将弹出,A2将显示给用户.应用程序A的任务现在看起来像这样:
|A2|
|A1|
Run Code Online (Sandbox Code Playgroud)
如果我们按下直到所有活动都消失,那么任务将被丢弃,下次我们启动应用程序A时,Android将创建一个新任务,其中应用程序A的主要活动作为第一个活动.
现在,让我们以相同的顺序再次打开A1,A2和A3.应用程序A的任务现在回到:
|A3|
|A2|
|A1|
Run Code Online (Sandbox Code Playgroud)
现在,假设我们按下主页按钮并启动另一个应用程序,即应用程序B.这将导致应用程序A的整个任务保留在后台,并为应用程序B创建一个新任务,并对其主要活动进行实例化.所以现在我们的情况看起来像这样:
Application A Application B
|A3| |B1|
|A2|
|A1|
Run Code Online (Sandbox Code Playgroud)
如果我们在应用程序B中打开更多活动,它们将被添加到它的任务中,就像应用程序A一样:
Application A Application B
|A3| |B3|
|A2| |B2|
|A1| |B1|
Run Code Online (Sandbox Code Playgroud)
现在,如果我们切换回应用程序A,我们将A的任务带到前台,B的任务将保留在后台.
同一活动的多个实例也可以存在于同一任务中.可以控制此行为.
如果系统内存不足,它将开始在后台杀死活动.如果任务的所有活动都消失了,任务也将被销毁.(更新:根据Dianne Hackborn的回答,这不是个别活动,而是托管它们的整个过程被丢弃.文档在这方面可能有点误导,混乱还有待解决.我会当我获得更多可靠信息时更新它.)
因此,总而言之,任务只是应用程序活动的集合.它用于维护应用程序的所有实例化活动的"堆栈"或"后台堆栈".当应用程序的所有活动都在后台时,它将保留在后台.当其中一个活动返回到前台时,任务也会被带回,并且当前活动的任务将被推送到后台.如果系统需要内存,则可以销毁后台活动和任务.
官方文档提供了更多信息,我建议阅读它们:
http://developer.android.com/guide/components/tasks-and-back-stack.html
| 归档时间: |
|
| 查看次数: |
2107 次 |
| 最近记录: |