面试复习一 Activity启动模式(2)

本文深入解析了Android中Activity的四种启动模式:standard、singleTop、singleTask和singleInstance,并介绍了它们的特点及应用场景。

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

Activity启动模式

1、设置启动模式

一般地,我们可以直接在AndroidManifest.xml 标签的一个属性中设置launchMode,如下:

<activity
 android:name=".ExampleActivity"
 android:label="singleTask launchMode"/>

2、四种动模式认识

  • standard:标准模式 系统的默认模式,每次启动一个Activity都会重新创建一个新的实例,不管这个实例是否已经存在。被创建的实例的生命周期符合典型情况下Activity的生命周期,它的onCreate,onStart,onResume都会被调用。这是一种典型的多实例实现,一个任务栈中可以有多个实例,每个实例可以属于不同的任务栈。在这种模式下,谁启动了这个Activity,那么这个Activity就会运行在启动它的那个Activity的任务栈中。
  • singleTop:栈顶复用模式 如果新的Activity已经位于任务栈的栈顶,那么此Activity不会被重新创建,同时它的onNewIntent方法会被回调,通过此方法的参数我们可以取出当前请求的信息。需要注意的是,这个Activity的onCreate,onStart不会被系统调用,因为它没有发生改变。如果新Activity的实例已存在但不是位于栈顶,那么新Activity仍然会被重建。
  • singleTask:栈内复用模式 这是一种单实例模式,在这种模式下,只要Activity在一个栈中存在,那么多次启动Activity都不会重新创建实例,和singleTop一样,系统也会回调其onNewIntent。详细来说,当一个具有singleTask模式的Activity请求启动后,系统首先会寻找是否存在这个Activity想要的任务栈,如果不存在,就重新创建一个任务栈,然后创建这个Activity的实例后放到栈中。如果存在这个Activity所需的任务栈,这时候看栈中是否存在这个Activity的实例,如果有实例存在,那么系统就会把这个Activity调到栈顶并调用它的onNewIntent方法,如果实例不存在,就创建这个Activity的实例并压入栈中。
  • singleInstance:单实例模式 这是一种加强的singleTask模式,如果某个Activity是singleInstance模式,当这个Activity启动以后,系统会为它创建一个新的任务栈,然后Activity独自在这个新的任务栈,由于栈内复用的特性,后续的请求均不会创建新的Activity,除非这个独特的任务栈被系统销毁了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值