zoukankan      html  css  js  c++  java
  • 活动组件(六):活动的启动模式

          在实际项目中,应该根据特定的需求为每个活动指定恰当的启动模式。启动模式一共有四种分别是standard、singleTop、singleTask、singleInstance,可以在AndroidMainfest.xml中通过<activity>标签android:launchMode属性来指定。

    1.standard

        standard是活动默认的启动模式,在不进行显式指定的情况下,所有活动都会自动使用这种启动模式。在该模式下,每当启动一个新的活动,它就会在返回栈中入栈,并处于栈顶位置,对于使用standard模式的活动,系统不会在乎这个活动是否已经存在返回栈中,每次启动都会创建该活动的一个新的实例。

    2.singleTop

          如果使用singleTop模式,在启动活动时如果发现栈顶的活动已经是该活动时,则可认为可以直接使用它,不会再创建新的活动实例,不过如果该活动不处于栈顶的话,仍会创建该活动新的实例。

    3.singleTask

          当活动的启动模式是singleTask时,每次启动该活动时系统首先会在返回栈中检查是否存在该活动的实例,如果发现已经存在则直接使用该实例,并把在这个活动之上的所有活动统统出栈,如果没有发现就会创建一个新的活动实例。

     4.singleInstance

          singleInstance模式算式四种启动模式中最复杂也是最特殊的一个了,不同于其它三种其它启动模式,指定为singleInstance模式的活动会启用一个新的返回栈来管理这个活动。应用场景是这样的:假设程序中有一个活动是允许其它程序调用的,如果想使其它程序和这个程序共享这个活动的实例,使用其它三种启动模式是不行的,因为每个应用程序都有自己的返回栈,同一个活动在不同的返回栈中入栈时必然是创建了新的实例。而使用singleInstance模式可以解决这个问题,在这种模式下会有一个单独的返回栈来管理这个活动,不管是哪个应用程序来访问这个活动,都共用同一个返回栈,也解决了共享活动实例的问题。

         假设有三个活动,A,B,C,其中B的启动模式是singleInstance,其它都是standard启动模式,首先A跳转到B,B再跳转到C,A和C在同一个返回栈内,栈顶元素是活动C,B在另一个返回栈内,只有一个元素。那么我点击一下Back键,那么就会从C返回到A,再点击一下从A返回到B。原理很简单:当栈顶元素是C,它的下一个活动是A,那么点击Back就显示活动A,在点击Back时,这时返回栈已经为空了,于是就显示另一个栈的栈顶元素,即B,如果再点击Back时,由于所有的栈都是空了,那么就显示退出程序。

  • 相关阅读:
    MySQL主从数据库同步延迟问题解决(转)
    Python2.6升级Python2.7
    Socket网络编程
    Python 面向对象进阶
    Python类基础知识(面向对象基础)
    shell脚本中出现^M
    Centos6下Python3的编译安装
    Python成长之路(常用模块学习)
    SVN使用总结
    xshell锁屏
  • 原文地址:https://www.cnblogs.com/hujingwei/p/5102506.html
Copyright © 2011-2022 走看看