二、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进入

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

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

此处延伸:栈(First In Last Out)与队列(First In First Out)的区别

todo

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值