【Tech-Android-View】Android中的Activity的LunchMode的用法和意义

     Activity启动模式


(1)首先我们每产生一个App就会在Android系统中产生一个任务,默认情况下,这个任务Task是一个包含了Activity的栈,由此和我们所知的Acitivity的FIFO一致。模型如下:

       

         【Tech-Android-View】Android中的Activity的LunchMode的用法和意义_第1张图片


 1、standard 
  1)每次使用startActivity方法启动Activity时,都会创建该Activity的
     新实例
  2)在任务中使用startActivity方法启动Activity时,该Activity在当前
     任务的Activity栈中创建  
  3)同一个任务中可以存在Activity的多个实例
  4)Activity的多个实例可以出现在不同的任务中  
 2、singleTop
  1)该模式的Activity不处于栈顶时表现与标准模式的activity一致
  2)该模式的Activity处于栈顶时,使用startActivity重复启动该Activity
     并不会创建该Activity的新实例。而是调用原栈顶的Activity实例的
     onNewIntent方法将本次启动的intent对象传入到该实例中。
 3、singleTask
  1)该模式的Activity是单例的,即在同一时刻Android系统中只能存在该Activity
     的一个实例,所以当重复启动该Activity时并不会创建该Activity的新实例,而
     是重新使该Activity的实例进入交互状态,如果该Activity的实例不位于当前任

     务的栈顶,则将该实例之上的所有Activity释放,以使该Activity重新成为栈顶。

      

  2)该模式的Activity在第一次创建时,如果所在任务的taskAffinity值与该Activity
     的taskAffinity值相同,则直接在该任务中创建Activity的实例,如果该任务的
     taskAffinity值与该Activity的taskAffinity值不同,则在新的task中创建该实例
 4、singleInstance
  1)该模式的Activity是单例的,即在同一时刻Android系统中只能存在该Activity
     的一个实例,所以当重复启动该Activity时并不会创建该Activity的新实例。
  2)该模式的Activity的实例不会与其他实例同处于一个栈中。所以当通过该Activity
     的实例取启动其他的Activity时,其他Activity的新实例不会在该任务中直接创建
     如果其他Activity的新实例的吸附值与现存某任务的吸附值一致,则在与其吸附值
     一致的任务中创建,如果没有与其吸附值相同的现存任务,则在新任务中创建
  3)该模式的Activity实例第一次创建时一定创建在一个新的任务中      

         




A为我们App打开的时候首先进入的Activity,然后我们在A中打开ActivityB,此时B出现在栈顶,这就是我们说的压栈。

 《1》在第一种情况下,我们再产生一个A,这时,A 会被重新实例化,并出现在栈顶,而原来在的A,仍然会在栈底中。

  <2>在第二种情况下 ,我们显然更清楚了 ,当B设置了lunchMode=SingleTop的时候,当它出现在栈顶的时候,我再startAcitityB ,B只会调用 onpause() ..onnewInten(),
onResunme()....

 <3>第三 第四种情况出现了taskaffinity值,这个值指向一个包名,说明你该Actitivy依在那个包下,。



 <4>android:taskAffinity    

  1、吸附、亲族
  2、每一个Activity都会有一个taskAffinity值。如果未明确设置
     则该Activity的taskAffinity值与其所在的application的
     taskAffinity值一致
  3、每一个application都有一个taskAffinity值,如果未设置,则
     该值等于改程序的主包的包名
  4、每一个task都有一个taskAffinity值,task的taskAffinity值
     与其Activity栈中栈底的Activity的taskAffinity值一致  

你可能感兴趣的:(android,application,任务)