Android activity 启动模式小结

本文深入解析了Android中四种启动模式(standard、singleTop、singleTask、singleInstance)的特点及应用场景,同时介绍了通过Intent.Flags实现的启动模式控制方法,如FLAG_ACTIVITY_NEW_TASK、FLAG_ACTIVITY_SINGLE_TOP等,帮助开发者灵活掌握不同场景下的Activity启动策略。

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

Android 的启动模式两种控制方法:

1.可以通过清单文件控制,android:launchMode

2.通过intent.addFlags实现

两种启动方式的优先级是:代码优先,即第二种优先于第一种

一.通过清单文件控制的有四种启动模式:

1.standar 标准模式,启动多少就创建多少个activity实例

2.singleTop 栈顶复用模式,简单的说就是栈顶已经有了这个activity,再次启动这个activty的时候,系统不会为其创建新的实例。举个例子:A为standar,B为singleTop ,启动A后,再启动B,再启动B后,任务栈还是AB,此时再次启动A,再启动B,任务就是ABAB,这种启动方式只关心top是不是重复,不关心栈内会不会重复

3.singleTask 栈内复用模式,简单的说就是栈顶已经有了这个activity,再次启动这个activty的时候,系统不会为其创建新的实例,并且,再次启动的时候会把原来压在该activity上的activity清空。举个例子,A为standard,C为singTask,先启动A,再启动C,再启动A,再启动A,此时的任务栈是ACAA,然后再次启动C的时候,任务栈此时的样子是AC。(singleTask可以和taskAffinity 和allowTaskReparenting 一起使用指定改activity启动模式需要独立运行到指定名只taskAffinity,默认情况下,所有任务栈的名字为包名,此时singTask的启动模式为singleInstance,相对singleInstance,可以指定栈名,通过这种方式可以为app建立三个以上任务栈)

4.singleInstance 特殊的singleTask 除了有singleTask的特性外,加强了一点就是只能单独的运行在一个任务栈中。举个例子,A为standard,D为singleInstance,启动A,启动D,再启动A,现在前台的任务栈为AA,后台的任务栈为D,如果后退,应该AA退完,然后再来退D

使用场景:

1.standar :一般场景使用

2.singleTop:聊天对话场景

3.singleTask:首页

4.singleInstance:登录页面

二.通过intent addflags指定启动模式(这个摘抄《Android艺术开发探索》的)

1.Intent.FLAG_ACTIVITY_NEW_TASK:效果和上面的singleTask相同

2.Intent.FLAG_ACTIVITY_SINGLE_TOP:效果和上面的singleTop相同

3.Intent.FLAG_ACTIVITY_CLEAR_TOP:一般和Intent.FLAG_ACTIVITY_NEW_TASK配合使用,singleTask的效果,不过如果被启动的activity的launchMode为standar ,那么它自己和在它栈顶的都得清除,重新new一个实例放在栈顶

4.Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS:等同在xml中指定android:excludeFromRecents = "true",作用是不希望这个activity在历史的列表中(这个表示不懂,不过看到一个还不错的介绍 https://www.jianshu.com/p/2bdc16cba04f

除了直接运行app知道这些启动模式的特性之外,还可以通过命令行的方式去查看当前的activity情况,命令为 adb shell dumpsys activity +(包名),包名可以加可以不加,个人觉得加上包名容易看一些

 

主要参考: 
《android开发艺术探索》 

基于开源大模型的教学实训智能体软件,帮助教师生成课前备课设计、课后检测问答,提升效率与效果,提供学生全时在线练习与指导,实现教学相长。 智能教学辅助系统 这是一个智能教学辅助系统的前端项目,基于 Vue3+TypeScript 开发,使用 Ant Design Vue 作为 UI 组件库。 功能模块 用户模块 登录/注册功能,支持学生和教师角色 毛玻璃效果的登录界面 教师模块 备课与设计:根据课程大纲自动设计教学内容 考核内容生成:自动生成多样化考核题目及参考答案 学情数据分析:自动化检测学生答案,提供数据分析 学生模块 在线学习助手:结合教学内容解答问题 实时练习评测助手:生成随练题目并纠错 管理模块 用户管理:管理员/教师/学生等用户基本管理 课件资源管理:按学科列表管理教师备课资源 大屏概览:使用统计、效率指数、学习效果等 技术栈 Vue3 TypeScript Pinia 状态管理 Ant Design Vue 组件库 Axios 请求库 ByteMD 编辑器 ECharts 图表库 Monaco 编辑器 双主题支持(专业科技风/暗黑风) 开发指南 # 安装依赖 npm install # 启动开发服务器 npm run dev # 构建生产版本 npm run build 简介 本项目旨在开发一个基于开源大模型的教学实训智能体软件,帮助教师生成课前备课设计、课后检测问答,提升效率与效果,提供学生全时在线练习与指导,实现教学相长。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值