Alex

Android software development engineer

Welcome to my web site


Activity启动模式

目录

[TOC]

修改记录

版本 修改内容 日期
V1.0.0 初始版本 2022.5.18
     

Activity启动模式

Android系统为Activity提供了四种启动模式:

  • 标准模式(standard)
  • 栈顶复用模式(singleTop)
  • 栈内复用模式(singleTask)
  • 单例模式(singleInstance)

Activity以栈的方式进行管理,栈是一种先进后出的数据结构,也就是先启动的Activity,都是最后销毁。每按一次返回,退出一个Activity。

Activity的启动模式会影响栈的管理以及Activity真实的生命周期,方便APP处理不同的业务场景。

先简单介绍四种模式的定义

标准模式(standard)

Android创建Activity的默认模式,如果没有为Activity设置启动模式的话,默认就是标准模式。 每次启动一个Activity都会创建一个新的实例入栈,无论这个实例是否存在。

栈顶复用模式(singleTop)

有两种处理情况:

  1. 要创建的Activity已经处于栈顶,此时会直接复用栈顶的Activity,不会再创建新的Activity。
  2. 要创建的Activity已经存在栈中,但是不处于栈顶;此时会创建一个新的Activity实例入栈。

栈内复用模式(singleTask)

要创建的Activity已经处于栈中,此时不会创建新的Activity,而是将栈中的Activity上面的其他Activity销毁,使它成为栈顶Activity。

单例模式(singleInstance)

singleInstance全局单例模式,singleTask的加强模式。除了具有singleTask的特性外,此模式Activity只能单独位于一个Activity栈。 经常使用于系统应用,比如,Launch、锁屏键的应用,整个系统中只有一个。

标准模式(standard)

Android新建的所有Activity默认启动模式都是standard,按照创建的先后顺序,依次入栈,采用先进后出的方式管理。 不管栈中是否已存在Activity实例,都会创建新的Activity实例再入栈。

接下来,我们通过代码介绍standard模式,大体思路如下:

  1. 先声明一个Activity,应用启动时创建Activity实例并入栈
  2. 给Activity添加按钮点击事件,当用户点击按钮时创建Activity实例并入栈。
  3. 用户手动点击系统返回键,Activity实例出栈,Activity实例的生命周期结束。
  4. 通过日志观察Activity栈和Activity实例的运行情况。

声明Activity

先在manifest中声明Activity

<activity android:name="com.wangxb.app.launchmode.MainActivity">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

定义Activity界面,声明一个按钮 ```xml

打赏一个呗

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦