Android-Activity的启动模式

  在Android中每个界面都是一个Activity,切换界面操作其实是多个不同Activity之间的实例化操作。在界面切换的过程中,会形成一个Activity序列,这个序列可以称之为Task。Task其实就是一个栈,通常情况下用户开启一个应用,该应用就会自动创建一个栈,该栈中存放了一系列的Activity的实例,栈顶的Activity实例会被第一个调用。每一个Android应用可以同时拥有好几个栈,但只有一个栈处于激活状态。

  启动一个Activity共有四种模式,分别是:

  standard(标准模式)

     standard模式为系统默认模式,如果设置为该模式,每次激活Activity时都会创建一个新的实例,并放入Task的栈顶。

  singleTop(单顶模式)

     singleTop模式下启动有两种情况:

        1.如果将要启动的Activity在栈顶,则不会创建新的Activity实例,直接复用该实例。

        2.如果将要启动的Activity不在栈顶,则会创建新的Activity实例,并放入Task的栈顶,即使栈中已经存在该Activity的一个实例。      

  singleTask(单任务模式)

     singleTask模式下启动的Activiyt在整个Task中只能存在一个实例,启动时有两种情况:

        1.如果在Task中不存在将要启动的Activity实例,则会创建新的Activity实例,并放入Task的栈顶。

        2.如果在Task中已经存在将要启动的Activity实例,若该Activity实例在栈顶,则会直接复用该实例,若该Activity实例不再栈顶,则会将该Activity以上的所有Activity全部从Task中移除,使该Activity处于栈顶。

   singleInstance(单实例模式)       

       singleInstance模式下启动的Activity在整个Android系统中只能存在一个实例,并且在其启动后,系统会为该Activity新建一个Task,在这个Task中只允许有该Activity一个实例。一旦该模式启动的Activity实例已经存在于某个栈中,任何应用再激活该Activity时都会重用该栈中的实例。

注:

  1.Activity启动模式可以在AndroidMainfest.xml文件中的activity标签中添加android:lunchMode=""

  2.singleTask和singleInstance模式下,只有首次启动调用onCreate()创建Activity,其他情况均调用onNewIntent()。

  3.startActivityForResult()方法启动的Activity如果设置为singleTask和singleInstance模式,则立即会在onActivityResult()方法中返回cancled。

 

转载于:https://www.cnblogs.com/RMBP975/archive/2013/03/15/2961571.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值