配置Activity时可指定android:launchMode属性,该属性用于配置该Activity的加载模式,其属性值有:
standard 标准模式,默认加载模式
singleTop Task顶单例模式
singleTask Task内单例模式
singleInstance 全局单例模式
android采用Task来管理多个Activity,当我们启动一个应用时,android就会为之创建了一个Task,然后启动这个应用的入口(即<intent-filter.../>中配置MAIN和LAUNCHER的Activity)
android并没有为Task提供API,因此开发者无法真正访问Task,只能调用Activity的getTaskId()方法来获取它所在的Task的ID。
事实上我们可以把Task理解为Activity的栈,Task以栈的形式来管理Activity,先启动的Activity被放在Task栈底,后启动的Activity被放在Task栈顶。

1.standard 标准模式,默认加载模式
每次通过这种模式启动目标Activity时,Android总会为目标Activity创建一个新的实例,并将该实例Activity添加到当前Task栈中-这种模式不会启动新的Task,新Activity将被添加到原有的Task中。
在AndroidManifest.xml中MainActivity中添加android:launchMode=”standard”或不添加,因为standard模式为默认加载模式。

2.singleTop模式
与standard模式基本相似,但有一点不同,当将要被启动的目标Activity已经位于Task栈顶时,系统不会重新创建目标Activity实例,而是直接复用已有的Activity实例。
在AndroidManifest.xml中MainActivity中添加android:launchMode=”singleTop”

3.singleTask模式
采用这种加载模式的Activity在同一个Task内只有一个实例,当系统采用singleTask模式启动目标Activity时,有如下三种情况
如果将要启动的目标不存在,系统将会创建目标Activity的实例,并将它加入Task栈顶
如果将要启动的目标Activity已经位于Task栈顶,此时与singleTop模式行为相同
如果将要启动的目标Activity已经存在,但没有位于Task栈顶,系统将会把位于该Activity上面的所有Activity移出Task栈,从而使的目标Activity转入栈顶。
在AndroidManifest.xml中MainActivity中添加android:launchMode=”singleTask”

4.singleInstance模式
这种加载模式下,系统保证无论从那个Task中启动目标Activity,只会创建一个目标Activity实例,并会使用一个全新的Task栈来装载该Activity实例。分为如下两种情况
如果将要启动的目标Activity不存在,系统会先创建一个全新的Task,再创建目标Activity实例,并将它加入新的Task栈顶
如果将要启动的目标Activity已经存在,无论它位于那个应用程序中,无论它位于那个Task中,系统将会把Activity所在的Task转到前台,从而使用该Activity显示出来.
在AndroidManifest.xml中OtherActivity中添加
android:launchMode=”singleInstance”

注:
由于篇幅较大,更详细的案例分析及Task栈的分析已上传到我的资源中
点击下载

更多相关文章

  1. [置顶] Activity的四种启动模式和onNewIntent()
  2. Android(安卓)动态改变app图标
  3. Activity的四种启动模式和onNewIntent()
  4. Android源码阅读分析:ActivityManagerService分析(二)——Activity
  5. Android(安卓)知识汇总
  6. Android中Activity启动模式详解
  7. android Lollipop勿扰模式
  8. Android软键盘显示模式及打开和关闭方式(推荐)
  9. Android中Activity启动模式详解

随机推荐

  1. android安全学习之2—android中.pem和.pk
  2. Android(安卓)项目实战:智慧北京(黑马)
  3. Journey of Android(安卓)for Mac
  4. Android(安卓)个人理财工具一:项目概述与
  5. Android(安卓)实战面试题分享
  6. Android之完美退出方法(2.1-2.2-2.3SDK版
  7. 2018年6月份Android上海找工作经历
  8. 谈谈Android中文短信的实现
  9. 中华万年历官方V2.0.0 Android最好用的日
  10. android高亮引导页