关于 Android 四种启动模式和应用场景

本文深入探讨了Android开发中Activity的四种启动模式:standard、singleTop、singleTask和singleInstance,解析它们的作用与应用场景,帮助开发者避免重复启动Activity的问题。

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

背景

在 Android 开发中,遇到一个场景 Bug。

  • 在回调事件中启动另外一个 Activity 过程中,存在点击速度太快(即在页面未转跳之前,双击甚至多次快速点击)会多次启动该 Activity ,启动后点击返回按钮需要多次返回,具体场景看动图。

翻阅大量资料后,在官方文档发现在 AndroidMainfest 的 Activity 标签下有一个名为 android:launchMode 的属性(详细见下图)。

launchMode

LaunchMode (启动模式)

官方文档解析如下:

android:launchMode 是有关如何启动 Activity 的指令。共有四种模式与 Intent 对象中的 Activity 标志(FLAG_ACTIVITY_*常量)

作用

Activity的启动模式的应用的设置是和它的开发场景有关系的,在App中打开新的Activity的基本上分为两种情况:

  • 目标Activity是本应用中的Activity,即它的启动模式是可以直接在fanifest中配置或者默认为standard,任务栈也可以自己随意设置;
  • 目标Activity是第三方App中的Activity,这个时候就需要先考虑打开新Activity的是和自己App放在同一任务栈中还是新的task中,然后考虑Activity的启动模式; 所以Android提供了优先级更高的设置方式在Intent.setFlags(int flags),通过这setFlags就可以为打开第三方的App中Activity设置任务栈和启动模式了,具体设置就自己去看源码了。

应用场景

详细看表格:

LaunchMode场景
standard邮件、默认场景
SingleTop登录界面、WXPlayEntryActivity、WXEntryActivity、推送通知栏
SingleTask程序模块逻辑入口:(Fragment 的 ContainerActivity)、WebView 页面、扫一扫页面;电商APP:购物页面、确认订单页面、付款页面
SingleInstance系统 Launcher、锁屏键、来电显示等系统应用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值