android Activity 四大启动模式探究


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

  • 四种模式介绍
    • standard 标准启动模式,也是activity默认的启动模式。android使用栈来管理activity(下面我们所称的任务栈就是存放activity的activity栈).使用此模式每当打开一个ancivity,就在此任务栈栈顶添加一个acticity。此模式的activity每打开一次,就在此任务栈顶添加一个activity,而不管此任务栈中是否有此activity.如下图:android Activity 四大启动模式探究_第1张图片
      我们依次打开firstActivity跳到firstAcvity再到secondActivity最后在跳转FirstActivity,在任务栈中排列如上图。而我们按Back键返回时,会一次出现上图左侧的情况。
    • singleTop 栈顶服用模式。如果activity已经位于任务栈栈顶,则此activity不会被创建而(此时此activity的onNewIntent方法会被回调,通过此方法我们可以获得当前请求信息,而oncreate、onStart不会被调用,因为activity并没有重新创建)。如果不位于栈顶,则重新创建,等同于standard模式。android Activity 四大启动模式探究_第2张图片
      左图我们从B打开A,再从A打开A,不会重新创建A.右图也是如此
    • singleTask 栈内单一模式。即当前任务栈只会有一个此activity,重复调用的时候,其工作模式和singleTop在栈顶相同。此类启动时,有两种情况:第一种位于栈顶,则不会被再次创建;第二种位于下部,则移除其上所有acticity,如图:android Activity 四大启动模式探究_第3张图片
      第一种不必解释,第二种,从C再次启动A,则B.C都会从任务栈中移除,此时A位于栈顶
    • singleInstance 单一实例模式。和singleTask不同的是,每当启动它时,会重新创建一个任务栈,把它放到里面,该任务栈只会有这一个activity.android Activity 四大启动模式探究_第4张图片
  • 两种使用方法
    • 第一种在AndroidMenifest中,activity中指定,例如: android:launchMode=”singleTop”;
      android Activity 四大启动模式探究_第5张图片
    • 第二种,在activity中指定,如下图,为SecondActivity设置启动模式
      android Activity 四大启动模式探究_第6张图片
    • 一些常用的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】 保存图片到系统图库, 并立即显示在图库中
  2. Activity中的四种启动模式
  3. Android 获得图片并解码成缩略图以减少内存消耗
  4. Android加载/处理超大图片神器!SubsamplingScaleImageView(subsam
  5. Android修改icon和roundIcon后,显示的图标还是默认的图片
  6. android中异步加载图片
  7. Android Activity的四种加载模式
  8. android 从相册中获取图片设置成头像的问题:
  9. android 设置背景图片

随机推荐

  1. c语言中strstr函数的用法是什么?
  2. c语言六种基本语句是什么
  3. c语言strcmp函数用法是什么?
  4. 学习c语言用什么软件
  5. c语言用什么函数来比较字符串大小?
  6. system()函数是什么
  7. c语言六种基本语句是哪些?
  8. c语言函数由哪两部分组成
  9. c语言在gcc中怎么运行程序?
  10. c语言的源程序不必通过编译就可以执行对