android 四种启动模式 

本文详细介绍了Android中的四种启动模式:standard、singleTop、singleTask和singleInstance,并通过具体示例阐述了它们的区别与应用场景。

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

android 四种启动模式 记录一下

android 四种启动模式:

  • standard
  • singleTop
  • singleTask
  • singleInstance

为activity设置启动模式,防止创建大量重复的activity

设置方法

在AndroidManifest.xml中为对应的activity标签设置android:launchMode属性

模式解释

  • standard

这种是默认启动模式,在这种模式下,会重复创建相同的activity

一个activity A

无论A是否已经存在,创建A时,都会新建A

例如A中一个按钮,可以跳转到A,

每点击一次都会新建一个A在栈顶

  • singleTop

在这种模式下,不允许activity叠加,但是可以有重复

两个activity A B ,两个activity中都有按钮可以跳转到A B

若A在栈顶,点击按钮跳转到A ,这时不会新建A 二是调用A的onNewIntent

点击跳转到B,会新建一个B

若A,B已存在,B在栈顶,点击按钮跳转到A,这时会新建A

也就是说此时有两个A的实例存在

用他人博客的例子:

操作:A -> B -> B
实际:A -> B (第二次跳转B,因为B在栈顶所以不会新建B而是调用B的onNewIntent方法)

操作:A -> B -> A -> B
实际:A -> B -> A -> B

  • singleTask

这种模式下只有一个实例,若在同一个应用中启动ta,且其Activity不存在,会在同一个task下新建一个,其Activity已存在,在activity栈中,会将其之上的activity销毁并调用他的onNewIntent方法

用他人博客的例子:

三个activity A B C,其中都有按钮可以跳转到A B C

操作:A -> B -> C
实际:A -> B -> C -> B

操作:A -> B -> C -> B
实际:A -> B (最后一次跳转B时,将C销毁同时调用B的onNewIntent方法)

  • singleInstance

只会有一个实例,这个实例在一个task中,且这个task中不会有其他activity

他人博客例子:

两个activity A B ,B为singleInstance模式

操作:A -> B
实际:A (假设task的ID为0) -> B (新建一个task,ID为1)

操作:其他应用 -> B -> A
实际:其他应用(假设task的ID为0) -> B (新建一个task,ID为1)-> A(新建一个task,ID为2)

自己遇到的相关问题

在写一个App的时候发现,每次App转到后台在回到前台都会刷新在栈顶的activity,后来才发现启动模式是默认的standard模式,每次都会新建一个activity,后来根据需求改成singleTask模式就OK了

最后

写这个博客是为了加深自己对启动模式的理解和记忆,文中有借鉴他人的博客也加上了一些自己遇到的问题,在此记录一下

他人博客:http://blog.youkuaiyun.com/shinay/article/details/7898492/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值