新东西006--Activity启动模式

设置Activity启动模式,对于控制activity实例个数,控制系统开销和运行效率有很大的帮助,但使用之后对返回键回退到页面有比较大影响,需要小心控制.

        在说启动模式之前,我们需要先谈谈Android 任务和任务栈,因为模式跟它有密切的关联

   任务和activity栈

android的task一般由activity组成,也就是一个activity栈.  一般从主界面开始,当你点击任何一个图标,进入一个应用就相当于创建了一个任务栈,你在应用类做的任何操作(可能引发创建实例,或者开启另外应用的操作)都将把启动的那个activity添加到该任务栈中.就好比,你在主页面启动QQ,然后QQ里面看到了一篇好文章,你分享到微信,那么进入微信选人的那个界面肯定是微信的一个activity,这时会把这个activity加到你QQ这个任务栈中(当然,这跟微信那个页面activity的启动模式有关,但只要不是singleinstance即可).你可以简单的理解在主页面进入应用,那那个应用的第一个activity就是这个任务的根目录,后续所有的增删实例内容都将在这个任务中处理.

   启动模式

        Activity启动模式的种类,以及对activity实例的影响(这部分跟网上的大同小异,也算自己对看完资料的一个总结吧)

standard(系统默认)

start一次就会创建一次,最后创建的也会被放在回退栈的最顶端.比如现在回退栈里有5个activity A,你再start一次A,那么回退栈就有6个,你按下返回键,最上面的activity就会被移出回退栈,也就是相当于这个实例你再也找不回来了.

常见使用范畴:

singleTop

每次start的时候,都会先去回退栈判断栈顶是否存在(一定是栈顶位置)该activity的实例,如果在栈顶,则显示出来,否则创建.比如,现在先启动了A,再启动了B,再启动了C,现在再启动A(A-B-C-A),在这个时候按下返回键,它会回到C,再按会到B,再按就会回到A,因为第四号位置的A是又被创建过的,因为在C创建它的时候,它不在栈顶.现在,如果是A一直重复创建A,那么按下返回键即可退出,因为一直在栈顶,不会重新创建实例.

常见使用范畴:避免点击按钮创建多个实例,解决重复点击创建activity问题

      singleTask

    每次start的时候,都会判断是否含有该实例,如果有,则移除栈内所有在它上面的实例.比如先启动A,再启动B,再启动C,现在启动A,按下返回键,系统退出.

    常见使用范畴:退出整个应用(登录页面)

    singleInstance

    只有一个实例,并且这个实例存在一个单独的task中,这个task是不允许其他的activity存在的

    常见使用范畴:浏览器,字典,因为在一个android手机里,调用这些程序的应用比较多,因此为了维护自己的实例,它就将自己的实例都放在一个task中存储控制



参考的部分文章地址

http://blog.csdn.net/shinay/article/details/7898492


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值