Android任务栈和启动模式

时间:2021-05-07 17:47:02

Android任务栈

什么是任务栈:

Android任务栈又称Task,它是一种栈结构,具有后进先出的特点,用于存放Activity。且只有栈顶的Activity能与用户进行交互。在退出应用时,必须把任务栈中的Activity全部清理出栈,此时任务栈才会销毁。当然任务栈也能处于后台,此时任务栈中的Activity的状态和数据都会被保存。一个应用可以有多个任务栈。

 

Android启动模式:

Android分为4种启动模式,分别为:

1、Standard模式

2、SingleTop模式

3、SingleTask模式

4、SingleInstance模式

 

1、Standard模式(系统默认的模式)

使用这个模式,每次去启动一个Activity的时候都会创建一个新的实例,并将这个实例加入栈中。

Android任务栈和启动模式Android任务栈和启动模式

2、SingleTop模式

又称栈顶复用模式,听这个名字我们就知道这个模式下启动新的Activity,如果有一个实例已经在栈顶时,不会创建新的Activity,而是会调用onNewIntent方法,并复用栈顶的Activity。而当我们要启动新的Activity不处于栈顶时,则会新建一个Activity实例。

Android任务栈和启动模式Android任务栈和启动模式

此时由于MainActivity处于栈顶,所以不会创建MainActivity实例,而是复用栈顶的MainActivity实例,并调用MainActivityonNewIntent方法,onCreateonStart方法不会被调用。

Android任务栈和启动模式Android任务栈和启动模式

此时OtherActivity启动MainActivity,但由于MainActivity没有处于栈顶,则会新建一个MainActivity实例。


3、SingleTask

又称栈内复用模式,这是一种单例模式,使用该模式的Activity会在启动时检查栈内是否已经存在该实例,如果存在,则会将该实例以上的Activity全部清理出栈,此时它则处于栈顶位置,并回调onNewIntent方法;如果不存在则重新创建一个新的实例。

Android任务栈和启动模式Android任务栈和启动模式

4、SingleInstance

singleInstance模式下,该Activity在整个android系统内存中有且只有一个实例,而且该实例单独尊享一个Task。换句话说,A应用需要启动的MainActivity 是singleInstance模式,当A启动后,系统会为它创建一个新的任务栈,然后A单独在这个新的任务栈中,如果此时B应用也要激活MainActivity,由于栈内复用的特性,则不会重新创建,而是两个应用共享一个Activity的实例。

Android任务栈和启动模式
Android任务栈和启动模式


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