Activity的启动模式有四种,分别是standard、singleTop、singleTask和singleInatance。在AndroidMainfest.xml中,通过标签的android:launchMode属性可以设置启动模式.下面针对四种模式分别进行详细的讲解。
1.standard模式
standard是Activity默认的启动模式,在不指定Activity启动模式的情况下,所有Activity使用的都是standard模式,因此前面使用的Activity都是standard启动模式
在standard模式下,每当启动一个新的Activity,它就会进入任务栈,并处于栈顶的位置,系统不会判断这个Activity在栈中是否存在,每次启动都会创建一个新的实例。
接下来通过图示展示一下standard模式下Activity的存放情况:
在standard启动模式下假设有三个Activity,首先Activity01最先入栈,其次是Activity02,最后是Activity03;出栈时,Activity03最先出栈,其次是Activity02,最后是Activity01,满足”先进后出”的原则.

2.singleTop模式
singleTop模式与standard类似,不同的是,当启动的Activity已经位于栈顶时,则直接使用它不创建新的实例.如果启动的Activity没有位于栈顶时,则创建一个新的实例位于栈顶.
接下来通过图示展示一下singleTop模式下Activity的存放情况:
分两种情况:
(1)当前栈顶中的元素是Activity03,如果再次启动的界面还是Activity03,则复用当前栈顶的Activity实例.

由于当前栈顶还是Activity03,则Activity03不用再次入栈,所以出栈和 standard一样.

(2)如果再次启动的界面没有位于栈顶,则会重新创建一个实例.

3.singleTask模式
如果希望Activity在整个应用程序中中存在一个实例,可以使用singleTask模式,每次启动Activity时,系统首先会检查栈中是否存在该Activity的实例,如果发现则直接使用该实例,并将当前之上的所有Activity出栈,如果没有发现则创建一个新的实例.

4.singleInstance模式
在开发程序中,如果需要Activity在整个系统中都只有一个实例,这时就需要用到singleInstance模式,singleInstance模式加载Activity时,无论从哪个任务栈中启动该Activity,只会创建一个Activity实例,并且会使用一个全新的任务栈来装载该Activity实例,采用这种模式分为以下两种模式:
(1)如果要启动的Activity不存在,系统会先创建一个新的任务栈,再创建该Activity实例,并把Activity加入栈顶.

更多相关文章

  1. 【 Android(安卓)10 系统启动 】系列 -- init(天字一号进程)
  2. Android绘制流程窗口启动流程分析(中)
  3. Android(安卓)AnimationDrawable运行的几种方式
  4. android 中 SQLiteOpenHelper的封装使用详解
  5. 【Android】关于FLAG_ACTIVITY_NEW_TASK 和 taskAffinity
  6. Android入门:Activity四种启动模式
  7. Android(安卓)Context完全解析
  8. Android实现图片轮播切换实例代码
  9. Android(安卓)设计模式之Builder模式

随机推荐

  1. Android自动测试之benchmark test 简介
  2. Android 性能优化之内存泄漏检测以及内存
  3. android 学习技术点 网址集锦
  4. 常用组件:android的图片组件ImageView
  5. Android Flash 10.1与Lite版视频播放能力
  6. Android 软键盘控制弹出(很好使,自己写的,绝
  7. Android 第一课——Android架构
  8. Android系统原理与开发要点详解
  9. android sdk manager 更新不到最新资源列
  10. Android与Unity交互调用mUnityPlayer.qui