美文网首页
activity的四种启动模式及区别

activity的四种启动模式及区别

作者: 王多鱼2 | 来源:发表于2019-08-18 02:24 被阅读0次

    一 四种模式只能在AndroidManifest定义;由开发者决定

    1,standard
    2,singleTop
    3,singleTask
    4,singleInstance
    我是这样理解的,带有single的;翻译中文

    仅有一个的; 单一的; 单个的; 
    

    standard 标准的;
    singleTop就是顶部上只有一个;又名:栈顶复用模式
    singleTask,一个Task内只有一个;又名:栈内复用模式
    singleInstance;整个操作系统只有一个;又名:单例模式

    • standard:标准模式
      默认启动模式,启动activity时直接创建新的实例并压入启动它的任务栈顶。
    • singleTop:栈顶复用模式
      当前任务的栈顶已经存在着这个activity的实例,那么就不会创建新的实例,而是调用该实例的onNewIntent()方法。若不在栈顶就会新建一个实列;
    位于栈顶时再次启动的生命周期
     D/SingleTaskAActivity: --onCreate--
     D/SingleTaskAActivity: --onStart--
     D/SingleTaskAActivity: --onResume--
     D/SingleTaskAActivity: --onPause--
     I/SingleTaskAActivity:  --onNewIntent --.
     D/SingleTaskAActivity: --onResume--
    
    • singleTask:栈内复用模式
      没有它要的任务栈
      系统会新创建一个任务,并将该activity实例化作为该任务的根activity。
      有它要的任务栈
      这时候系统会找到该任务栈,如果任务栈里只有它自己则直接调用该activity实例的onNewIntent()方法。如果任务栈中它的上方还存在别的activity,那么这些activity会被全部弹出栈
    • singleInstance:单例模式
      会为activity单独创建一个任务并能够复用。但是该模式的activity不允许其他activity跟自己存在于同一个任务中,由此 activity 启动的任何 activity 均会被在其他的任务中打开。

    二 Intent Activity Flag;由启动者决定;

    如何选择Flag呢,Flag很多,记肯定是记不住的
    下面的图是根据你希望这个TASK的过程而选择


    1566064699(1).jpg

    Intent.FLAG_ACTIVITY_SINGLE_TOP
    同AndroidManifest.xml方式中的singleTop启动模式。
    Intent.FLAG_ACTIVITY_NEW_TASK
    同AndroidManifest.xml方式中的singleTask启动模式。

     intent.setComponent(new ComponentName(this, StandardAActivity.class));
     intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    

    三 TaskAffinity 是什么? (怎么结合使用的就不描述了太多了,容易晕)

    Activity 的归属, 也就是 Activity 应该在哪个 Task 中. 一般情况下在同一个应用中, 启动的 Activity 都在同一个 Task 中.
    每个 Activity 都有 taskAffinity 属性, 这个属性指出了它希望进入的 Task. 如果一个 Activity 没有显式的指明 taskAffinity, 那么它就会使用 Application 的 taskAffinity, 如果 Application 也没有指明, 那么该 taskAffinity 的值就等于包名.

    四 启动模式的实际应用

    singleTop :适用于同类型的activity;例如接收通知启动内容显示的页面,耗时操作返回页面,登陆页面
    singleTask:使用与程序入口:weiview页面,扫一扫页面;确认订单页面;付款页面;
    有如下启动流程,微信主页 >> 聊天页 >> 聊天设置页 >> 用户资料页 >> 聊天页,此时我们按下返回键直接回到了微信主页。
    singleInstance:适用于需要和程序分离开的页面:闹铃响界面;来电页面;锁屏页;

    相关文章

      网友评论

          本文标题:activity的四种启动模式及区别

          本文链接:https://www.haomeiwen.com/subject/ojylsctx.html