android Activity 四大启动模式探究

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就消失了,不会留在任务栈中

你可能感兴趣的:(android,android进阶之路)