安卓自学笔记

第一章:基础知识

第四节:Activity的启动模式

 

A有四种启动模式:singleTop、singleInstance、singleTask、standard

启动模式可以在manifests文件夹下的AndroidManifest.xml文件进行设置:

如图:

 

在页面上显示两个参数

第一个是TaskID,使用getTaskId()方法获得

第二个是Current Activity id,使用toString()方法获得

1.标准启动模式(standard)

是默认启动方式

写一个按钮用来启动自身所在的A,点击后启动了自身,这个新的A存在于同一个任务栈里,只是创建了不同的实例而已。

新的A按启动顺序依次进入任务栈里,既然是个栈,那就有先进后出的规则,所以就能通过后退键来显示上一个A。

如图:

如图:

 

2.(singleTop)
点击启动自身的按钮后,没有变化,按后退键之后退出程序,再启动程序后,这个A有了一个新的实例。

接着新建一个A,用来被另一个按钮所启动。

启动后,我们先观察Main页面的实例,再启动另一个A

如图:

再通过新的A页面上的按钮回到Main页面

如图:

这时候Main页面的实例和最开始的实例不同。

如图:

意味着,同一栈里,若被启动的A处于栈点,则不会创建新的实例,否则会创建一个新的实例。

 

3.(singleTask)

程序不变

先点击按钮启动默认页Main自身,没有变化。

再启动另一个A,接着再通过按钮启动Main页面,这时候原先的A被弹出,所看见的Main还是原来的那个Main实例,因此,这时候如果点击后退键,就会退出整个程序。因为任务栈中只剩一个实例。

 

4.(singleInstance)

程序不变

先点击按钮启动默认页Main自身,没有变化。

再启动另一个A,会发现已经不是同一个任务栈了,再点击回到Main,发现跟最初的任务栈和实例都一样。意味singleInstance模式的A只存在于一个独立的任务栈里面,这个任务栈只包括这一个A的实例。

如图:

如图:

如图:

这两个A通过按钮互相切换显示,没有创建各自的新实例。