您的位置:首页 > 移动开发 > Android开发

Android中Activity四种启动模式

2016-03-11 16:00 337 查看
/**
* standard模式
*
*   标准启动模式,也是activity的默认启动模式。在这种模式下启动的activity可以被多次实例化,
*即在同一个任务中可以存在多个activity的实例,每个实例都会处理一个Intent对象。
*如果Activity A的启动模式为standard,并且A已经启动,在A中再次启动Activity A,
*即自己来启动自己,会在A的上面再次启动一个A的实例.=>调用几次,就得按几次Back键才能退出。

* 启动3次活动A后, 栈状态:(A1,A2,A3
* Back一次后,    栈状态:(A1,A2
* 再Back一次后,   栈状态:(A1
* 第3次Back后,   栈状态:(
*
* singleTop模式
*
*    如果一个以singleTop模式启动的活动的实例已经存在于任务桟的桟顶,那么再启动这个Activity时,
* 不会创建新的实例,而是重用位于栈顶的那个实例,并且调用该实例的onNewIntent()方法将Intent对象
* 传递到这个实例中。举例来说,如果A的启动模式为singleTop,并且A的一个实例已经存在于栈顶中,
* 那么再启动A时,不会再次创建A的实例,而是重用原来的实例,并且调用原来实例的onNewIntent()方法。
* 这是任务桟中还是这有一个A的实例。=>不管调用几次,按一次Back键就可以退出。
*    如果以singleTop模式启动的activity的一个实例已经存在与任务桟中,但是不在桟顶,
* 那么它的行为和standard模式相同,也会创建多个实例。
*
* 启动1次活动A后,  栈状态:(A1
* 再启动N次活动A后, 栈状态:(A1
* Back一次后,     栈状态:(
*
* 启动1次活动A后,  栈状态:(A1
* 启动1次活动B后,  栈状态:(A1,B1
* 再启动1次活动A后, 栈状态:(A1,B1,A1
* 再启动1次活动A后, 栈状态:(A1,B1,A1
* Back3次后,      栈状态:(
*
*
* singleTask模式
*
*   启动模式为singleTask时,每次启动该活动时系统首先会在返回栈中检查是否存在该活动的实例,
* 如果发现已经存在则直接使用该实例,并把在这个活动之上的所有活动统统出栈,如果没有发现就创
* 建一个新的活动实例。
*
* 启动1次活动A后,  栈状态:(A1
* 启动1次活动B后,  栈状态:(A1,B1
* 再启动1次活动A后, 栈状态:(A1       此过程中B1已经被请出栈
*
*
* singleInstance模式
*
*   指定为singleInstance模式的活动会启用一个新的返回栈来管理这个活动。比如说,这有一个共享的
* 活动资源,把他放在一个新建的单独栈内,可以一直供其他栈不断调用,而不影响其余的栈(共享问题)。
*
* 活动A1,C1为默认启动模式standard,B1为singleInstance
* 启动1次活动A后,  栈1状态:①(A1
* 启动1次活动B后,  栈2状态:②(B1      因为B的启动模式为singleInstance,所以为它新建栈
* 启动1次活动C后,  栈1状态:①(A1,C1           此时显示为C的layout
* Back一次后,     栈状态: ①(A1     ②(B1     此时显示为A的layout
* 再Back一次后,    栈状态: ①(       ②(B1     此时显示为B的layout
* 再Back一次后,    栈状态: ①(       ②(       此时显示Home界面
* */
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: