Activity 启动模式

来源:互联网 发布:淘宝店铺首页怎么弄 编辑:程序博客网 时间:2024/05/18 01:09

在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。

原创粉丝点击