Android任务栈
什么是任务栈:
Android任务栈又称Task,它是一种栈结构,具有后进先出的特点,用于存放Activity。且只有栈顶的Activity能与用户进行交互。在退出应用时,必须把任务栈中的Activity全部清理出栈,此时任务栈才会销毁。当然任务栈也能处于后台,此时任务栈中的Activity的状态和数据都会被保存。一个应用可以有多个任务栈。
Android启动模式:
Android分为4种启动模式,分别为:
1、Standard模式
2、SingleTop模式
3、SingleTask模式
4、SingleInstance模式
1、Standard模式(系统默认的模式)
使用这个模式,每次去启动一个Activity的时候都会创建一个新的实例,并将这个实例加入栈中。
2、SingleTop模式
又称栈顶复用模式,听这个名字我们就知道这个模式下启动新的Activity,如果有一个实例已经在栈顶时,不会创建新的Activity,而是会调用onNewIntent方法,并复用栈顶的Activity。而当我们要启动新的Activity不处于栈顶时,则会新建一个Activity实例。
此时由于MainActivity处于栈顶,所以不会创建MainActivity实例,而是复用栈顶的MainActivity实例,并调用MainActivity的onNewIntent方法,onCreate和onStart方法不会被调用。
此时OtherActivity启动MainActivity,但由于MainActivity没有处于栈顶,则会新建一个MainActivity实例。
3、SingleTask
又称栈内复用模式,这是一种单例模式,使用该模式的Activity会在启动时检查栈内是否已经存在该实例,如果存在,则会将该实例以上的Activity全部清理出栈,此时它则处于栈顶位置,并回调onNewIntent方法;如果不存在则重新创建一个新的实例。
4、SingleInstance
在singleInstance模式下,该Activity在整个android系统内存中有且只有一个实例,而且该实例单独尊享一个Task。换句话说,A应用需要启动的MainActivity 是singleInstance模式,当A启动后,系统会为它创建一个新的任务栈,然后A单独在这个新的任务栈中,如果此时B应用也要激活MainActivity,由于栈内复用的特性,则不会重新创建,而是两个应用共享一个Activity的实例。
Scheme跳转协议:
android中的scheme是一种页面内跳转协议,是一种非常好的实现机制,通过定义自己的scheme协议,可以非常方便跳转app中的各个页面;通过scheme协议,服务器可以定制化告诉App跳转那个页面,可以通过通知栏消息定制化跳转页面,可以通过H5页面跳转页面等。
参考:
关于任务栈和启动模式相关博客:
http://blog.csdn.net/javazejian/article/details/52071885
关于Scheme跳转协议相关博客:
http://www.cnblogs.com/whoislcj/p/5825333.html