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

Android的任务栈简介、AndroidMainifest启动模式、Intent Flag启动模式

2016-06-28 11:10 453 查看

1.Android任务栈简介

1.Android系统,通过栈结构来保存整个App的Activity,栈底的元素是整个任务栈的发起者;

2.App启动的时候,如果当前环境中不存在该App的任务栈,那么系统就会创建一个任务栈,此后,这个App所启动的Activity都将在这个任务栈中被管理,这个栈也被称为一个Task,也就是若干个Activity的集合组成一个Task。要注意的是,一个Task中的Activity可以来自不同的App,也可以来自同一个App;

3.栈结构:先进先出的线性表。


2.AndroidMainifest启动模式

1.standard:默认的启动模式,如果不指定Activity的启动模式,则使用这种方式启动Activity。每次启动界面,都会创建一个新的实例处理任务栈顶部,当用户按下返回键或者调用finish()方法的时候,系统会移除栈顶部的Activity。

2.singleTop:启动时,系统会判断当前栈顶Activity是不是您要启动的Activity,如果是,则直接使用,如果不是,重新创建Activity。用于:接收到信息后显示的界面。但系统仍然会在创建Activity的时候调用onNewIntent()方法。

3.singleTask:与singleTop模式类似,只不过singleTop检查顶元素是不是需要启动的Activity,而singleTask是检测整个任务栈里面是否存在当前需要启动的Activity。如果存在,则将该Activity置于栈顶,并将该Activit以上的Activity都销毁了(针对的是同一个app),如果是其他程序以singleTask的模式来启动Activity,那么它将创建一个新的任务栈。
退出整个应用:将住Activity设置为singleTask模式,然后在要要退出的Activity中转到猪Activity,从而将主Activity之上的Activity都清除,然后重写主Activity的onNewIntent()方法,在方法中加上一句finish(),将最后一个Activity结束掉。

4.singleInstance:任务栈只存在一个Activity,如果应用A的任务栈中创建MainActivity实例,启动模式为singleInstance,如果应用B也激活MainActivity实例,则不需要创建,两个应用共享该Activity实例。常用于需要与程序分离的界面。

5.singleTop与singleInstance的区别:如果在一个singleTop或者singleInstance的Activity中通过startActivityForResult()方法来启动另一个ActivityB,那么系统将直接返回Activity.RESULT_CANCELED而不会再去等待返回。这是由于系统在Framework层做了对这两种启动模式的限制,因为Android开发者认为,不同Task之间,默认是不能传递数据的,如果一定要传递,那就只能通过Intent来绑定数据。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android 任务栈