android Activity 四大启动模式探究


                     我们都知道android中有四种启动模式式,standard,singleTop,singleTask,singleInstance,如果熟练的使用四种模式,可以实现不同的界面跳转,增加用户使用体验。

  • 四种模式介绍
    • standard 标准启动模式,也是activity默认的启动模式。android使用栈来管理activity(下面我们所称的任务栈就是存放activity的activity栈).使用此模式每当打开一个ancivity,就在此任务栈栈顶添加一个acticity。此模式的activity每打开一次,就在此任务栈顶添加一个activity,而不管此任务栈中是否有此activity.如下图:
      我们依次打开firstActivity跳到firstAcvity再到secondActivity最后在跳转FirstActivity,在任务栈中排列如上图。而我们按Back键返回时,会一次出现上图左侧的情况。
    • singleTop 栈顶服用模式。如果activity已经位于任务栈栈顶,则此activity不会被创建而(此时此activity的onNewIntent方法会被回调,通过此方法我们可以获得当前请求信息,而oncreate、onStart不会被调用,因为activity并没有重新创建)。如果不位于栈顶,则重新创建,等同于standard模式。
      左图我们从B打开A,再从A打开A,不会重新创建A.右图也是如此
    • singleTask 栈内单一模式。即当前任务栈只会有一个此activity,重复调用的时候,其工作模式和singleTop在栈顶相同。此类启动时,有两种情况:第一种位于栈顶,则不会被再次创建;第二种位于下部,则移除其上所有acticity,如图:
      第一种不必解释,第二种,从C再次启动A,则B.C都会从任务栈中移除,此时A位于栈顶
    • singleInstance 单一实例模式。和singleTask不同的是,每当启动它时,会重新创建一个任务栈,把它放到里面,该任务栈只会有这一个activity.
  • 两种使用方法
    • 第一种在AndroidMenifest中,activity中指定,例如: android:launchMode=”singleTop”;
    • 第二种,在activity中指定,如下图,为SecondActivity设置启动模式
    • 一些常用的Flag
      • Intent.FlAG_ACTIVITY_NEW_TASK
        启动一个新的任务栈来启动activity。相当于“singleInstance”
      • Intent.FLAG_ACTIVITY_SINGLE_TOP
        相当于设置“singleTop”
      • Intent.FLAG_ACTIVITY_CLEAR_TOP
        -相当于设置“singleTask”
      • Intent.FLAG_ACTIVITY_NO_HISTORY
        当此activity启动其他activity后此activtiy就消失了,不会留在任务栈中

更多相关文章

  1. Android启动过程详解(3)——Zygote
  2. Activity 的四种加载模式
  3. android 启动过程及init.rc
  4. Android开发指南1-框架主题-基础知识
  5. Android(安卓)根文件系统启动过程
  6. AndroidManifest配置文件介绍
  7. 如何同时启动两个Android模拟器
  8. Android是怎么启动的-[Android取经之路]
  9. Android(安卓)studio四大组件之Activity

随机推荐

  1. Android学习笔记:活动(Activity)
  2. Android开发学习笔记:Android学习进阶路线
  3. android监听自身被卸载的方法
  4. Android(安卓)studio 利用gradle快速编译
  5. 自定义View,指示wifi信号强度(菜鸟历险记
  6. Android(安卓)API Guides---Best Practic
  7. AsyncTask的使用半解--!
  8. android中消费事件的概念以及使onClick和
  9. 从Android到WP8 你将要面对的七大变迁
  10. Android关于定时器Timer的定义及用法