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. 应用phprpc协议实现Android客户端的一些总结
  2. [置顶] 我的Android进阶之旅------>Android MediaPlayer播放mp3
  3. 精通android体系架构、mvc、常见的设计模式、控制反转(ioc)
  4. WCF 实例 —— Android 短信助手 (WCF + Android) (2)
  5. Android 开发手记一NDK编程实例
  6. Android活动Acitivity启动模式之singleTop
  7. Android中的AsyncTask和Handler应用实例二

随机推荐

  1. 复杂链表的复制——牛客offer
  2. Java图形化界面实例:
  3. jtable表头渲染器
  4. 无法从其他用户的crontab作业执行java程
  5. Visual Studio 2012本身都是已经支持Jque
  6. Web分页实现及实例演示(一)——subList()
  7. 程序主菜单之javascript完全模拟
  8. 再论javaIO之拷贝MP3(read方法返回int的原
  9. Java的Grizzly为缓冲区占用了大量内存?
  10. Kotlin:相当于KClass的getClass()。