<activity>下的launchMode属性可以设置四种启动方式:
standard (默认模式)
singleTop
singleTask
singleInstance
区别:
(1) 响应Intent时Activity将被装入哪个task:
对于standard和singleTop模式,由产生该Intent(调用startActivity())的task持有该Activity——除非Intent对象里含有FLAG_ACTIVITY_NEW_TASK标志,那么就像前面章节讲的那样的寻找一个新的task。
对于singTask和singleInstance模式,总是标志Activity为task的root Activity,开启这样的活动会新建一个task,而不是装入某个正在运行的任务。
(2) 一个Activity是否可以有多个实例:
一个standard或者singleTop属性的Activity可以实例化多次,可以属于多个不同的task,而且一个task也可以含有相同Activity的多个实例。相反的,singleTask或者singleInstance属性的Activity只能有一个实例(单例)。因为这些Activity是位于task的底部。
(3) 实例是否能允许在它的task里有其他的Activity:
一个singleInstance属性的Activity是它所在的task里仅有的一个Activity,如果他启动了另一个Activity,那个Activity会被加载进一个不同的task而无视它的启动模式。一个singleTask属性的Activity总是一个t