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实例,并调用MainActivityonNewIntent方法,onCreateonStart方法不会被调用。


此时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


更多相关文章

  1. Android之声音管理器《AudioManager》的使用以及音量控制
  2. [置顶] 我的Android进阶之旅------>Android(安卓)MediaPlayer播
  3. WCF 实例 —— Android(安卓)短信助手 (WCF + Android) (2)
  4. Android学习笔记:Android异步任务之AsyncTask基础
  5. 精通android体系架构、mvc、常见的设计模式、控制反转(ioc)
  6. Android的线程和线程池
  7. Android开发手记一 NDK编程实例
  8. Android(安卓)开发手记一NDK编程实例
  9. android之声音管理器AudioManager的使用

随机推荐

  1. Android平台开发-3G function porting-3G
  2. 安卓布局,比较详细也比较乱
  3. Android(安卓)EditText inputType常用属
  4. android:versionCode和android:versionNa
  5. android中inputType属性在EditText输入值
  6. android图形系统详解
  7. Android(安卓)Studio基础篇
  8. Android图表控件MPAndroidChart的使用
  9. android中的launch
  10. Android:inputType常用取值