简单的说也就是安卓APP内四种页面的启动方式以及其特性。
在了解启动方式前我们需要明白任务(Task)和回退栈(Back Stack)。
任务栈
任务栈Task,是一种用来放置Activity实例的容器,他是以栈的形式进行盛放,也就是所谓的先进后出,主要有2个基本操作:压栈和出栈,其所存放的Activity是不支持重新排序的,只能根据压栈和出栈操作更改Activity的顺序。
启动一个Application的时候,系统会为它默认创建一个对应的Task,用来放置根Activity。默认启动Activity会放在同一个Task中,新启动的Activity会被压入启动它的那个Activity的栈中,并且显示它。当用户按下回退键时,这个Activity就会被弹出栈,按下Home键回到桌面,再启动另一个应用,这时候之前那个Task就被移到后台,成为后台任务栈,而刚启动的那个Task就被调到前台,成为前台任务栈,手机页面显示的就是前台任务栈中的栈顶元素。
Task是存在于Framework(安卓开发框架)的一个概念,一组相关联Activity的集合就是一个Task。而Task存在于名为Back Stack的数据结构中。即Framework以栈的形式管理用户启动的Activity。接下来我们开始说说activity的启动方式。
一、Standard(标准启动模式)——最常用的模式
直接在任务栈的最上层叠加需要启动的Activity,其出栈方式也是一层层回退。
入栈示例:(再次启动A后,应用的当前页面既是A。)
出栈顺序:则是A->D->C->B->A。
二、Single Task(栈内复用模式,也叫单一任务栈模式)
Activity在任务栈内只会存在一个实例。若需要调用的activity在栈内已存在,则复用activity并且清除其上方的所有activity。(可节约内存与CPU。)
如下图若此时需要启动的是A activity,则其上的所有BCD都会被清除。
三、SIngle Top(栈顶复用模式,也叫单一栈顶模式)
如果要启动的activity在任务栈的顶部已经存在,就不会创建新的实例。
若此时需要创建D以外的实例,则根据对应实例的启动方式进行叠加或新建栈。
四、SIngle Instance(单一实例模式)
整个手机操作系统里面只有一个实例存在。不同的应用去打开这个activity都是公用同一个activity。
若实例C的启动方式为单一实例方式,则有:
即系统新建了一个也是唯一一个C的单实例任务栈。
附:关闭应用 & 关闭进程
当在安卓系统中开启一个应用程序时系统就给它分配一个任务栈,当所有的Activity都退出栈时,任务栈就清空了。
关闭应用:即清空该应用的任务栈就关闭了该应用(如今很多应用有的功能:在App首页多次点击回退键),但其进程仍然会被保留(为使应用下次可快速启动)。
关闭进程:系统内存空间严重不足时会主动回收关闭进程。(也可由用户手动关闭后台进程。即召出最近使用程序列表,一键全部清除或者滑动清除需要彻底关闭的应用。)
启动进程:点击应用图标-->linux创建进程-->dalvik虚拟机-->读取清单文件,加载activity。
简要了解Activity的启动模式不仅对设计测试用例有帮助,也能加深对自己工作产品的了解。这都只是开发做新功能时跟我讲了讲,然后我自己补了一些的内容,所以还要学习的东西还有很多很多,继续努力吧。