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

来源:互联网 发布:win7关闭端口批处理 编辑:程序博客网 时间:2024/05/20 01:47
转载请注明出处: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使用的多次,而且需求不一定一样。这时通过启动标志来控制回方便很多
独学而无友,则孤陋而寡闻!分享知识,交流技术,碰撞思想!
0 0
原创粉丝点击