Android第一行代码——快速入门 Kotlin 编程(3.5 Activity 的启动模式)

本文详细介绍了Android中Activity的四种启动模式:standard、singleTop、singleTask和singleInstance,通过实例分析了每种模式的工作原理及其应用场景,帮助开发者理解如何根据需求选择合适的启动模式。
摘要由CSDN通过智能技术生成

目录

3.5        Activity 的启动模式

3.5.1        standard

3.5.2        singleTop

3.5.3        singleTask

3.5.4        singleInstance


3.5        Activity 的启动模式

        Activity 的启动模式对你来说应该是个全新的概念,在实际项目中我们应该根据特定的需求为每个 Activity 指定恰当的启动模式。启动模式一共有4种,分别是 standard、singleTop、singleTask 和 singlelnstance,可以在 AndroidManifest.xml 中通过给<activity>标签指定android:launchMode属性来选择启动模式。下面我们来逐个进行学习。

3.5.1        standard

        standard是 Activity 默认的启动模式,在不进行显式指定的情况下,所有 Activity 都会自动使用这种启动模式。到目前为止,我们写过的所有 Activity 都是使用的 standard 模式。经过上一节 的学习,你已经知道了 Android 是使用返回栈来管理 Activity 的,在 standard 模式下,每当启动一个新的 Activity ,它就会在返回栈中入栈,并处于栈顶的位置。对于使用 standard 模式的 Activity ,系统不会在乎这个 Activity 是否已经在返回栈中存在,每次启动都会创建一个该 Activity 的新实例。

        我们现在通过实践来体会一下 standard 模式,这次还是在 ActivityTest 项目的基础上修改。首先关闭 ActivityLifeCycleTest 项目,打开 ActivityTest 项目。

        修改 FirstActivity 中 onCreate() 方法的代码,如下所示:

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        Log.d("FirstActivity", this.toString())
        setContentView(R.layout.first_layout)
        button1.setOnClickListener {
            val intent = Intent(this,FirstActivity::class.java)
            startActivity(intent)
        }
    }

        现在重新运行程序,然后在 FirstActivity 界面连续点击两次按钮,可以看到 Logcat 中的打印信息如 图3.34 所示。

图 3.34        standard 模式下的打印日志

        从打印信息中可以看出,每点击一次按钮,就会创建出一个新的 FirstActivity 实例。此时返回栈中也会存在 3 个 FirstActivity 的实例,因此你需要连按 3 次 Back 键才能退出程序。

        standard 模式的原理如 图3.35 所示。

图3.35        standard 模式原理示意图

小贴士:

android:launchMode属性来选择启动模式

3.5.2        singleTop

        可能在有些情况下,你会觉得 standard 模式不太合理。Activity 明明已经在栈顶了,为什么再 次启动的时候还要创建一个新的 Activity 实例呢?别着急,这只是系统默认的一种启动模式而已,你完全可以根据自己的需要进行修改,比如使用 singleTop 模式。当 Activity 的启动模式指定为singleTop ,在启动 Activity 时如果发现返回栈的栈顶已经是该 Activity ,则认为可以直接使用它,不会再创建新的Activity 实例。

        我们还是通过实践来体会一下,修改 AndroidManifest.xml 中 FirstActivity 的启动模式,如下 所示:


                
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值