您的位置:首页 > 其它

关于Activity的四种启动模式

2015-12-01 10:37 183 查看
Activity的四种启动模式standard,singleTop,singleTask,singleInstance

Activity什么都不配置,默认的模式是standard;一般都会设置属性launchMode = "四种启动模式之一"。默认情况一个app是根据包名来创建任务栈的

1、standard标准模式:如果把一个activity设置成该模式,则在启动该activity时候,会创建新的activity实例(只要启动就会创建)。所以对于标准模式的一个activity,在一个任务栈中的不同位置可能会存在不同的实例(所有实例处理一个Intent对象)

2、singleTop模式:如果任务栈中没有,则会创建一个新的activity实例,如果任务栈已经有且在栈顶则不新建实例,如果任务栈中有但是不在栈顶,则会创建新的activity实例。这也是singleTop和standard模式的区别

3、singleTask模式:对于 SingleTask模式的Activity,它在堆栈底端,其上方可以有其他Activity被创建, 但是,如果发给该Activity的Intent对象到来时该Activity不在堆栈顶端,那么该Intent对象将被丢弃,但是界面还是会切换到当前的Activity

4、singleInstance模式:对于 singleInstance模式的Activity, 任务的Activity堆栈中如果有这样的Activity,那它将是堆栈中的唯一的 Activity, 当前任务收到的 Intent 都由它处理, 由它开启的其他 Activity 将在其他任务中被启动

singleTask 和 singleInstance模式的Activity 仅可用于启动任务的情况, 这种模式的Activity总是处在Activity堆栈的最底端,并且一个任务中只能被实例化一次

android:taskAffinity属性默认是false 在启动一个activity的时候设置Intent.FLAG_ACTIVITY_NEW_TASK这个属性(如果android:taskAffinity=true,则会在新的任务栈中创建,否则该标记不起作用)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: