您的位置:首页 > 其它

launchmode & clearTaskOnLaunch & finishOnTaskLaunch

2014-03-18 13:36 274 查看
1. launchmode

standard

默认值,Activity会依次入栈出栈,相同activity可以存在多个实例,加入依次启动A->B->C->D->C->A->A,则栈中为A B C D C A A,按返回键依次返回。

singleTop

standard模式基础上增加一条规则:如果Activit在栈顶,则只能存在一个实例。如果A 已经在栈顶,再次startActivity A时,不会创建新的实例,返回栈顶A。

假如当前栈为 A B C D C A,如果再次startActivity A,返回栈顶A,栈还是 A B C D C A。

singleTask

栈中将会只有一个该Activity实例。

例如:现在栈的情况为:A B C D。B的Launch mode为singleTask,此时D通过Intent跳转到B,则栈的情况变成了:A B。而C和D被弹出销毁了,也就是说位于B之上的实例都被销毁了。

1. singleTask Activity 不一定在栈底,可以是任何位置。

2. 再次启动时,返回task中的实例,并清除之上的activity。

singleInstance

独自占有一个task。栈底,并且只有一个activity。

2. clearTaskOnLaunch & finishOnTaskLaunch

clearTaskOnLaunch

该属性task任何activity有效。

假如依次启动里A->B->C, task为 A B C。

当进入后台,假如A 设置了clearTaskOnLaunch,再次点启动A的时候,则会销毁B、C。假如B 设置了clearTaskOnLaunch,再次点启动B的时候,也会销毁B、C。

即:task进入后台,再次从设置了clearTaskOnLaunch的activity进入task,会销毁除根Activity外的其他Activity,显示根activity

(1)有效情况:再次启动A(设置clearTaskOnLaunch)的时候,会销毁除根activity外的其他activity。

例如A、B、C属于同一个应用程序,桌面有一个入口A,当从桌面再次启动A的时候,会销毁B、C,显示A。如果A 没有设置clearTaskOnLaunch,则显示的时C,即栈顶Activity。

桌面有一个入口B并设置了设置了clearTaskOnLaunch,当从桌面再次启动B的时候,也会销毁B、C,显示A。如果B 没有设置clearTaskOnLaunch,则显示的时C,即栈顶Activity。

(2)按home键后,从近期任务进入,显示的还是栈顶Activity(C)

finishOnTaskLaunch

该属性task任何activity有效,对task根activity无效。

当进入后台,再次点启动该task的时候,会销毁设置了finishOnTaskLaunch的activity

即:task进入后台,只要再次进入该task,不管从A、B、C进入task,只要该task中的activity设置了finishOnTaskLaunch,就会销毁,根activity除外。

(1)有效情况:从A、B、C进入task,都可以

(2)按home键后,从近期任务进入,显示的还是栈顶Activity(C)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: