二、Activity的启动模式以及使用场景

1.任务栈的介绍

   (1)程序一打开就会创建了一个新的任务栈,当前程序的所有Activity都存储在这个任务栈中。

   (2)一个任务栈包含一个activity的集合,用户可以有序的和其中的activity进行交互,但只有栈顶的activity才可以和用户进行交互

  (3)任务栈可以移动到后台,并且保留了每一个activity的状态,能给用户有序的列它们的任务,并且不丢失他们状态信息

  (4)退出程序时,将所有activity清除出栈,程序退出

2.任务栈的缺点

    (1)每次打开一个页面就会添加到activity中,程序退出时,需要清除栈中所有activity,任务栈才会被销毁,造成用户需要多次返回才能退出体验差

    (2)每次打开一个页面就会添加到activity中,造成数据冗余,重复数据太多,导致内从溢出

3.任务栈的启动模式及应用场景

     (1)启动模式(lauchMode)可以决定 :

         是否生成新的Activity实例,

         是否重用已存在的Activity实例,

         是否和其他Activity实例在同一个task里

     (2)task是一个具有栈结构的对象,一个task可以管理多个Activity,启动一个应用后就对应一个task

     (3)配置启动模式

           a. mainfest设置android.lauchMode=“”

           b. startActivity的flag

      (4)介绍及使用场景

         a. standard  

            默认启动模式,每次都生成新的实例,并位于栈顶

         b.singTop

           当前activity在栈顶,不生成新的实例

           当前activity不在栈顶,生成新的实例。

           应用场景:接受通知启动内容显示页面(QQ接到消息弹出Activity)

        c.singTask

           当前activity在栈内,不生成新的实例,弹出其上所有activity

           当前activity不在栈内,生成新的实例

        应用场景:适合程序入口点(浏览器主界面,不管从多少个页面启动浏览器,指启动主页面一次,其余都走onNewIntent)

        d.singInstance

           启用新的栈结构,保证不再有其他Activity进入

           退出时,先清除幕前的栈的所有,然后清除另外的栈

           应用场景:适合要与程序分离的页面(闹铃提醒,将闹铃提醒与设置分离),不能用于中间页面


猜你喜欢

转载自blog.csdn.net/qq_25283953/article/details/80927488