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

AndroidMainfest启动模式

2015-10-19 12:56 393 查看
AndroidMainfest启动模式主要有4种,分别是standard singleTop singleTask singleInstance

1.standard

默认的启动模式,如果不指定Activity的启动模式,则使用这种方式启动Activity。这种启动模式每次都会创建新的实例,每次点击standard模式创建Activity后,都会创建新的MainActivity覆盖在原Activity上。

2.singleTop

如果指定启动Activity为singleTop模式,那么在启动时,系统会判断当前栈顶Activity是不是要启动的Activity,如果是则不创建新的Activity而直接引用这个Activity;如果不是则创建新的Activity。这种启动模式通常适用于接收到信息后显示的界面。如QQ接受到消息后弹出Activity,如果一次来10条信息,不可能一次弹出10个Activity。

注意,这种启动模式虽然不会创建新的实例,但是系统仍然会在Activity启动时调用onNewIntent()方法。举个例子来说,如果当前任务栈中有A,B,C三个Activity,而且C的启动模式是singleTop的,那么这个时候如果再次启动C,那么系统就不会创建新的C的实例,而是会调用C的onNewIntent()方法,当前任务栈中依然是A,B,C三个Activity。

3.singleTask

singleTask模式与singleTop模式类似,只不过singleTop是检测栈顶元素是否是需要启动的Activity,而singleTask是检测整个Activity栈中是否存在当前需要启动的Activity。如果存在,则将该Activity置于栈顶,并将该Activity以上的Activity都销毁。不过这里是指在同一个APP中启动这个singleTask的Activity,如果是其他程序以singleTask模式来启动这个Activity,那么它将创建一个新的任务栈。不过这里有一点需要注意的是,如果启动的模式为singleTask的Activity已经在后台一个任务栈中了,那么启动后,后台的这个任务栈将一起被切换到前台

4.singleInstance

singleInstance这种启动模式和使用的浏览器工作原理类似,在多个程序中访问浏览器时,如果当前浏览器没有打开,则打开浏览器,否则会在当前打开的浏览器中访问。申明为singleInstance的Activity会出现在一个新的任务栈中,而且该任务栈中只存在这一个Activiyty。举个例子来说,如果应用 A的任务栈中创建了MainActivity实例,且启动模式为singleInsance,如果应用B也要激活MainActivity,则不需要创建,两个应用共享该Activity实例。这种启动模式常用于需要与程序分离的页面,如SetupWizard中调用紧急呼叫。

以上就是AndroidMainfest的四种启动模式。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: