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. Activity中的四种启动模式
  2. 强烈推荐:Android史上最强大的自定义任务软件Tasker
  3. Android(安卓)异步加载解决方案(循环,多任务)
  4. Android如何判断系统是不是首次开机
  5. android 3.0中加快启动模拟器
  6. android 3.0中加快启动模拟器
  7. Android菜鸟的成长笔记(7)——什么是Activity
  8. Android~使用Service还是Thread
  9. Android(安卓)Activity的四种加载模式

随机推荐

  1. 【故障】dell G7 7588笔记本已安装声卡驱
  2. 码农之路(2)- 曲折的求职之路
  3. 码农之路 - 楔子
  4. K8S node(节点)
  5. 【我的Linux,我做主!】kubernetes基础概念
  6. Linux下安装配置Cntlm代理
  7. Docker快速搭建Clickhouse集群(3分片3副
  8. 联想g510电脑安装无线网卡bcm43142
  9. Java 对象的哈希值是每次 hashCode() 方
  10. 码农之路(8)- 高光时刻