Activity的启动模式

本文深入解析Android中Activity的四种启动模式:standard标准模式、singleTop栈顶复用模式、singleTask栈内复用模式和singleInstance单实例模式,并探讨它们在实际应用中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一般情况下我们对Activity的生命周期有所了解之外,针对于Activity的启动模式和标志位也需要有一定的了解。Activity作为Android四大组件之首,在我们日常开发中必不可少的,接触最多的组件之一。


Activity的LaunchMode

  • 首先Activity为什么需要启动模式?
    • 在默认情况下我们 多次启动同一个Activity的时候系统会创建多个实例并把他们放入一个任务栈中我们点击back键之后,Activity会回退,任务栈故名思议就是一种栈结构的数据结构。直到Activity任务栈为空时推出应用。
  • Activity的四种启动模式
    • standard 标准模式
      • 标准模式,这也是系统默认模式,每次启动一个Activity都会重新创造一个实例不管这个实例是否已经存在,被创建的实例的生命周期符合典型情况下Activity的生命周期,他的onCreate、onStart、onResume都会被调用。一个任务栈可以有多个实例,每个实例都可以属于不同的任务栈。
    • singleTop 栈顶复用模式
      • 栈顶复用模式,在这种模式下,如果新的Activity已经位于任务栈的栈顶那么此Activity就不会被创建,同时他的onNewIntent方法会被回调,通过此方法的参数我们可以获取当前请求的信息,需要注意的是这个Activity的onCreate、onStart不会被系统调用,因为它并没有发生变化,如果新的Activity的实例已经存在并且不再栈顶,那么该Activity仍然会被创建。
    • singleTask 栈内复用模式
      • 栈内复用模式,这是一种单实例模式,在这种模式下只要Activity在一个任务栈中,那么多次启动Activity都不会被创建,和singleTop一样,系统会调用onNewIntent方法,
    • singleInstance 单实例模式
      • 单实例模式,是一种加强了的singleTask模式。它除了具有singleTask模式的所有特性以外,还加强了一点,那就是具有此种模式的Activity只能单独的位于一个任务栈中,例如,Activity A是一个singleInstance模式,当A启动后,系统会为它创造一个新的任务栈,然后A独自运行在这个新的任务栈中,由于栈内复用的特性,后续请求均不会创建一个新的Activity,除非这个独特的独有的任务栈被系统销毁。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值