Android 启动模式和启动标志的关系以及各种适应的使用场合

转载请注明出处:http://blog.csdn.net/onlybeyond99/article/details/50688344   挨踢人one 
 一、设置方式
          1、通过在配置文件中设置Activity的launchMode熟悉设置启动模式
     2、在StartActivity()之前对Intent设置启动标志
 二、启动模式
         1、 standard: 标准模式,这也是系统的默认模式。 每次启动一个Activity都会重新创建一个新的实例。
          2、 singleTop: 栈顶复用模式。 在这种模式下,如果新Activity已经在任务栈中存在了并且位于任务栈的栈顶,那么新Activity不会被重新创建。
             
              运用场景:后台service不停的加载数据,然后用startactivity更新数据,

          3、 singleTask: 栈内复用模式。
               两种情况:当Activity设置 TaskAffinity并且与原来不一样时会新开一个栈,将其放入栈地
               没有设置时会加入当前的栈,如果之前的栈已经含有启动的Activity,则activity之上的其他Activity都会被移除
             
               适用场景:注册包含多个页面,从比较深的页面之间回到首页导航
 
          启动的Activity变为栈顶
          4、 singleInstance: 系统会为他单独创建一个任务栈将其压入,如果再次启动他,他已经存在了,那么就直接复
       用该任务栈。 单独占用一个任务栈
        适用场景:一些特别消耗资源的Activity,比如包含地图的Activity

三、启动标志
       1. FLAG_ACTIVITY_SINGLE_TOP
          与launchMode="singleTop"具有相同的行为
       2. FLAG_ACTIVITY_NEW_TASK
        单独用通常没效果,需要 与FLAG_ACTIVITY_CLEAR_TASK或FLAG_ACTIVITY_CLEAR_TOP联合使用。
      与 FLAG_ACTIVITY_CLEAR_TASK一起使用能够能够清除之前的Activity
       与 FLAG_ACTIVITY_CLEAR_TOP时需要把 TaskAffinity设置的和之前不一样。这时的效果类似于 singleTask不同 TaskAffinity的效果

四、关系与比较
         两种都能对Acitity的启动模式进行设置,且有很多模式两种都能实现。( singleInstance只能第一种实现
 但个人感觉启动标志会更灵活一些。因为很多的 Activity使用的多次,而且需求不一定一样。这时通过启动标志来控制回方便很多
独学而无友,则孤陋而寡闻!分享知识,交流技术,碰撞思想!

你可能感兴趣的:(android,使用场景,启动模式,启动标志)