展会信息港展会大全

Tasks and Back Stack 原理
来源:互联网   发布日期:2016-01-14 12:38:24   浏览:1361次  

导读:一、参考文章原文地址:Tasks and Back Stack二、术语解释1.task:一系列activity的集合,这些activity就可以看成是一个任务。2.back stack:一系列activity的存储结构,因其遵循后进先出的原则,所以我个人......

一、参考文章

原文地址:Tasks and Back Stack

二、术语解释

1.task:一系列activity的集合,这些activity就可以看成是一个任务。

2.back stack:一系列activity的存储结构,因其遵循后进先出的原则,所以我个人译为 回退堆栈 ,但本文仍沿用英文代表其原义。

三、本文主旨

Android推崇一种用户体验方式,即不同应用程序之间的切换能使用户感觉就像是同一个应用程序,很连贯的用户体验,官方称其为seamless (无缝衔接);那么,这种用户体验的实现原理是怎样的?

四、BackStack原理

我们首先来看一个图,该图展示了多个activity之间的切换并以时间线为线索展示这种行为,有些类似与UML中的时序图,

如下:

\

要想理解此图,首先一定要弄明白什么是堆栈,堆栈的特性后进先出(LIFO),两个主要操作压入(push)和弹出(pop)。

我们在来看图中的back stack,栈顶的activity都是用户当前看到的activity;每当用户切换到一个新的activity时,

Android就会将其压入到stack back,使其成为栈顶,也就是用户当前看到的activity;栈顶后面的activity此时呈stop状态,对应着Activity生命周期方法中的onStop(),并且Android还会保留其状态(比如文本框上的文字等)。这是压入操作。

当用户按下BACK键,Android就会将back stack顶部的activity弹出来,紧随其后的activity顶上去,就实现了回退的功能。被弹出的activity此时呈destroy状态,对应着onDestroy(),新栈顶activity呈resume状态,对应着onResume()。这是弹出操作。

这个底层原理弄明白之后,高层的执行流程就很容易理解了,这里不做说明了。利用堆栈这种数据结构的特点很好地实现了 无缝衔接 的用户体验,而且效率也是蛮高的,

五、任务原理

再来说说任务,根据 术语解释 当中介绍的,一个任务里面肯定会包含一个back stack,如果没有back stack的话,那么任务也就会结束了。理解这一点,我们可以引出下文。

任务的生命周期,简约版:

1.任务开始,按HOME键(这里要提出的是,如果你选择的应用程序先前没有打开过,也就是说没有开始一个任务,才会新

建一个任务)。

2.任务结束,一直按BACK键,直至回到HOME界面(未必只有此方式,有可能还是Android系统为回收内存而强行结束任务)。

任务的特点 聚合性:

所谓聚合性,指的就是任务中的那些activity会作为一个整体进行移动操作,比如将该任务放置到后台或前台。如下图:

\

此图描述的就是Android中的多任务场景,任务A和任务B内部都含有一个back stack,两个back stack互不干扰;当想切换回任务A时,只需按HOME键,再去选择先前的那个应用程序的icon即可。

另外针对任务,原文还指出了另外一个特性,同一个任务或不同任务中都可以保有多个相同的activity,如下图:

\

此特性是受back stack的特性限制而造成的,堆栈是一个LIFO的数据结构,所以说你不能够随便地更改它的数据顺序,因此上图中就有两个的Home Activity,但它们并不是同样的实例,而且状态也都是不一样的。

六、总结

起初看到这块的时候,并不理解 无缝衔接 到底讲述的是啥意思;突然某一天在网上看到一个Android新款手机视频介绍,视频上那人用触屏的方式展示了那款手机的新功能,操作起来非常得行云流水,连贯性极强,之后我就明白了这就是传说中的 无缝衔接 的用户体验,所以就在此基础上学习并翻译了这篇文章,达到了事半功倍的效果。

赞助本站

人工智能实验室

相关热词: Tasks Back Stack

AiLab云推荐
推荐内容
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港