android Flag启动模式


一、taskAffinity属性?


    这个 taskAffinity表示一个任务,这个任务就是当前activity所在的任务


 


二、优先级


     如果一个activity在清单文件设置了launchemode这时候startactivity启动该activity并且设置了intent的启动flag这个时候系统优先选择flag


 


二、flag启动模式


     1FLAG_ACTIVITY_NEW_TASK

                 重点掌握

                 注:应用广泛

                 例如:打开别的应用


          1.1概念通常这个标志会启用一个新的Task。然而,并不是必须是。如果已经存在一个Task与新Activityaffinity相同,这个Activity就会加入到那个Task中。如果不是,启动一个新的Task        


          1.2特点:系统默认所有的activitytaskaffinity属性值都相同


 


     2FLAG_ACTIVITY_CLEAR_TOP同一个应用

          重点掌握

                 注:应用广泛     

                 例如:做返回、动态更新ui显示



          2.1 场景:Activity A, Activity B, Activity CActivity D在同一个应用中.


       2.2 操作:Activity A启动开僻Task堆栈(堆栈状态: A), Activity A


中启动Activity B(堆栈状态: AB), ActivityB中启动Activity C(堆栈状态: ABC),ActivityC中启动ActivityD(堆栈状态: ABCD), ActivityD中启动Activity B,启动Activity BIntentFlag设置为FLAG_ACTIVITY_CLEAR_TOP, (堆栈状态: AB).


 


     3FLAG_ACTIVITY_BROUGHT_TO_FRONT带到前面--不同的应用

                      注:基本上不怎么使用       当一个activity设置了singleTask,那么系统会默认的给我们的intent设置                           当前这个flag           


          3.1场景: Activity A在名称为"TaskOne应用"的应用中, Activity C


                         Activity D在名称为"TaskTwo应用"的应用中.


            3.2操作:Launcher中单击"TaskOne应用"图标, Activity A启动开僻Task堆栈,命名为TaskA(TaskA堆栈状态: A),Activity A中启动Activity C,启动Activity CIntentFlag设为FLAG_ACTIVITY_NEW_TASK,Android系统会为Activity C开僻一个新的Task,命名为TaskB(TaskB堆栈状态: C), ActivityC中启动Activity D(TaskB的堆栈状态: CD),长按Home,选择TaskA,Activity A回到前台,Activity A中再次启动Activity C,在启动Activity CIntent中设置FlagFLAG_ACTIVITY_BROUGHT_TO_FRONT,TaskB回到前台,Activity C显示, (TaskB的堆栈状态: C).


          


 


     4FLAG_ACTIVITY_MULTIPLE_TASK:多个

           注:很少使用

          FLAG_ACTIVITY_NEW_TASK结合使用,首先在Intent中设置


   FLAG_ACTIVITY_NEW_TASK,打开Activity,则启动一个新Task,接着在Intent中设置FLAG_ACTIVITY_MULTIPLE_TASK,再次打开同一个Activity,则还会新启动一个Task.


 


   


   5 FLAG_ACTIVITY_SINGLE_TOP:

         重点掌握

 

                 注:应用广泛

                 例如:QQ消息界面


   概念如果当前栈顶的activity就是要启动的activity,则不会再启动一个新的activity


 


   6FLAG_ACTIVITY_RESET_TASK_IF_NEEDED:


   一般与FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET结合使用,如果设置该属性,这个activity将在一个新的task中启动或者或者被带到一个已经存在的task的顶部,这时这个activity将会作为这个task的首个页面加载。将会导致与这个应用具有相同亲和力的task处于一个合适的状态(移动activity到这个task或者从中移出),或者简单的重置这个task到它的初始状态


 


   7FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET


    在当前的Task堆栈中设置一个还原点当带有FLAG_ACTIVITY_RESET_TASK_IF_NEEDEDIntent请求启动这个堆栈时(典型的例子是用户从桌面再次启动这个应用)还原点之上包括这个应用将会被清除。应用场景:在email程序中预览图片时,会启动图片观览的actvity,当用户离开email处理其他事情,然后下次再次从home进入email时,我们呈现给用户的应该是上次email的会话,而不是图片观览,这样才不会给用户造成困惑。


        :存在ActivityA, Activity B, Activity C, Activity A启动开僻Task堆栈,


         命名为TaskA(TaskA堆栈状态: A),ActivityA中启动ActivityB(TaskA           堆栈状态: AB),接着Activity B启动Activity C(TaskA堆栈状态: ABC),启动Activity CIntent中设置FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET标题,这样TaskA中有一个还原点,当有包FLAG_ACTIVITY_RESET_TASK_IF_NEEDEDIntent请求TaskA堆栈时(比如请求ActivityA)系统就会将还原点以上的Activity清除, TaskA堆栈中只剩下了AB.


8FLAG_ACTIVITY_NO_ANIMATION:

                重点掌握

                 注:自己配置的动画不会被屏蔽

                 例如:不想要系统默认启动


如果给Intent对象设置了这个标记,那么将会阻止系统在Activity间切换的动画变换。

 

       9FALG_ACTIVITY_NO_HISTORY:

            注:偶尔使用

                 例如:1、提交界面(当我们提交成功之后,我们需要调转到新的界面)

                      2、当我们的activity没有往下执行的操作(末级activity


如果给Intent对象设置了这个标记,那么新的Activity将不会被保留在历史堆栈中

 

       10FLAG_ACTIVITY_NO_USER_ACTION:

              重点掌握

                 注:比较常用

                 特性:用来控制onUserLeavehint是否被调用

                 场景:比如我们的通话拨号、闹钟程序

                      可以在onUserLeavehint方法中发送广播,关闭通知栏上的通知



如果给Intent对象设置了这个标记,在新启动到前台的Activity被挂起之前,它会阻止

普通的onUserLeaveHint()方法的回调。如:电话拨号或闹钟程序就要使用这个标记来启动Activity


11FLAG_ACTIVITY_PREVIOUS_IS_TOP:

注:很少使用(几乎不怎么使用)


如果给Intent对象设置了这个标记,并且这个Intent对象被用于从一个既存的Activity中启动一个新的Activity,这个Activity不能用于接受发送给顶层Activity的新的Intent对象,通常认为使用这个标记启动的Activity会被自己立即终止。

 

       12FLAG_ACTIVITY_REORDER_TO_FRONT:

           重点掌握

                 注:如果我们这个activity设置了该flag,那么将会导致历史堆栈中如果存在这个activity,这个时候就会被带到前台

                 场景


     如果给Intent对象设置了这个标记,那么将会导致任务历史堆栈中既存的Activity被带到前台。

       13FLAG_ACTIVITY_TASK_ON_HOME: 

      把当前新启动的任务置于Home任务之上,也就是按back键从这个任务返回的时候会回到home,即使这个不是他      们最后看见的activity

     注意这个标记必须和FLAG_ACTIVITY_NEW_TASK一起使用。




整理自教程



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值