Activity启动模式
在AndroidManifest.xml中<activity>元素的android:launchMode属性设置
1.standard
* 默认模式。不需要对launcherMode进行配置
* 每次调用startActivity()无论如何都会启动新的Activity对象
2. singleTop
* 如果被启动的Activity在栈顶,不会启动新的Activity对象;否则,会启动新的Activity对象
结论1:当收到通知时有可能会跳转到栈顶的activity
结论2:出现的机会不大
3.singleTask
1. 如果被启动的Activity不存在,则创建新的Activity对象
2. 如果被启动的Activity在本栈中已经存在,则把该Activity之上的其他Activity统统出栈
3. 如果被启动的Activity存在于后台其他栈上,则把该Activity之上的其他Activity统统出栈,把该Activity与其以下的Activity加入到当前栈中
这种模式非常常见比如,想要退出整个应用程序。单独一个一个activity退出会比较麻烦。因此考虑:
(1). 把入口的MainActivity的launchMode设置成singleTask
(2). 在需要退出应用的时候,调用startActivity(Main)
(3). 退出MainActivity 整个应用就退出了
4.singleInstance
* 给Activity运行在一个独立的task中(task中只有一个Activity)
activity中通过getTaskId()获得当前activity所在的任务栈id
共用Activity的时候使用,比如百度地图(BaiduMap)的activity会被Map、Navi、大众点评等应用访问
共用Activity的时候使用,比如百度地图(BaiduMap)的activity会被Map、Navi、大众点评等应用访问
注:
获得任务栈ID的方法
int taskId = getTaskId();
textview.setText(this.toString() + ". taskId:" + taskId);
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现