android launchmode singleinstance问题
问题描述
最近测试关于launchmode的四种方式
默认模式 top singletask 都已经了解了
唯独这个instance模式
我的问题是
我们只作2个activity的假设A和B,其中A为instance的 B为标准模式
启动过程为A -> B -> A ->B
这个过程为什么B也只是一个实例了, B是标准模式,应该每次重新创建新的实例啊?
谁帮我解答一下这个问题,最好再做几个例子的测试,复杂一点的,能让我充分理解instance模式的
---------------------------
答:
1.对你问题描述的重复:
应用程序中有两个activity,activityA和activtiyB,activityA的启动模式为"SingleInstance",activityB的启动模式为"Standard",启动顺序为activityA->activityB->activityA->activityB,问为什么应用程序中activityB只有一个实例?
回答:activityB为"Standard"启动模式,按照题目中描述的启动顺序,activityB的新实例会有两个,
(1)activityB的新实例会和发送Intent启动它的组件在同一个task内
(2)activityB的新实例会在这个task内运行
(3)activityA为"SingleInstance"启动模式,它只会产生一个实例,并且这个实例在task中是根元素,这个task中不会再有新的元素,而两个新的activityB实例和这个activityA的实例不会在同一个task中
(4)activityB的这两个新实例会在同一个task中,除非启动activityB的Intent中包括参数FLAG_ACTIVITY_NEW_TASK,那么这两个activityB的新实例会各自在一个新的task中运行。
2.你在问题中提到,"最好再做几个例子的测试,复杂一点,能让我充分理解instance模式的",我想先在理论分析上讲清楚几个例子,之后如果有时间,再设计几个例子demo帮助你理解:
android平台中activity有如下四种启动模式,
"Standard"(默认)
"SingleTop"
"SingleTask"
"SingleInstance"
(1)"Standard"模式:该模式的Activity可以创建多个实例,且每个task都可以有多个实例,一个实例运行在哪个task内取决于给它发送Intent的组件运行在那个task内;
(2)"SingleTop"模式:该模式的Activity如果在task栈顶的话,则不生成新的该Activity的实例,直接使用栈顶的实例,否则,生成该Activity的实例;
比如现在task栈元素为A-B-C-D(D在栈顶),这时候给D发一个启动Intent,如果D是"SingleTop"模式的话,则不会生产D的新实例,栈状态仍为A-B-C-D;如果这时候发送者给B发送Intent,不管B的launch mode是"Standard" 还是 "SingleTop" ,都会生成B的新实例,栈状态变为A-B-C-D-B;
(3)"SingleTask"模式:只有一个task中会有,如果已经有其他的task并且包含该实例,那就直接调用那个task的实例;如果没有任何task中有该Activity的实例,则新建一个task,将该实例装入,作为task的根元素,但是该实例不会独占该task;
(4)"SingleInstance"模式:该Activity实例会独占task,其它Activity不能存在那个task里,如果它启动了一个新的Activity,不管新的Activity实例的launch mode 如何,新的Activity都将会到别的task里运行。
3.最后附上一个链接,方便你更好地理解
http://blog.csdn.net/feng88724/article/details/6412638
android launchmode singleinstance问题相关推荐
- android:launchMode的四种方式
Activity一共有以下四种launchMode: standard singleTop singleTask singleInstance 1.standard standard模式是默认的启动模 ...
- Android 监听home键(android:launchMode=singleTask 与 onNewIntent(Intent intent) 的用法
android:launchMode="singleTask" 和 onNewIntent(Intent intent)两个特性,现总结一下经验: android:launchMo ...
- android LaunchMode之SingleTask
2019独角兽企业重金招聘Python工程师标准>>> 昨天看了一下SingleTask的LaunchMode,意思是说如果一个Activity在Manifest文件中的Launch ...
- android launchmode java代码,java – Android:launchMode = SingleTask问题
如果你的其他活动在 Android中正常宣布活动默认值,那么回到你的应用程序应该带你到你离开的同一个活动(使用硬件主页按钮) 但请记住,Android系统在需要系统资源时会杀死应用程序.因此,当您转到 ...
- Android LaunchMode
source code :https://github.com/fantasyRqg/MytestApp/tree/AndroidLaunchModeTest 以下文字摘自 Tasks and Bac ...
- Android关于Task的一些实践之SingleTask, SingleInstance和TaskAffinity
上一篇文章粗略地介绍了一下关于Android中Task的基本知识.只是实践才是检验真理的唯一标准,所以.今天就来试验一下Task中的launchMode是否真的实现了文档所说的那样. 首先.定义三个A ...
- 【Android】Activity的四种launchMode
转自:http://blog.csdn.net/liuhe688/article/details/6754323 合抱之木,生於毫末:九層之台,起於累土:千里之行,始於足下.<老子> 今天 ...
- Activity生命周期Android,横屏切换不重新创建Activity, Activity的四种launchMode
Activity生命周期 1.启动Activity:系统会先调用onCreate方法,然后调用onStart方法,最后调用onResume,Activity进入运行状态. 2.当前Activity被其 ...
- 解决Android singleInstance 按home退到桌面从桌面点击应用图标又从启动页重新启动的问题
解决Android singleInstance 按home退到桌面从桌面点击应用图标又从启动页重新启动的问题 最近项目中有处理腾讯IM视频语音聊天切换到悬浮窗功能, 初解决方案: 语音/视频通话界面 ...
最新文章
- Java开发环境的搭建以及使用eclipse从头一步步创建java项目
- 普通卷积armv7-neon指令集实现—QNNPACK
- python缩进格式作用_关于自动缩进格式问题,高手帮忙!
- java如何避免注释重复_Java 8中的可重复注释
- spring使用注解@Scheduled执行定时任务
- 隐马尔科夫模型(HMM)笔记(公式+代码)
- 专业课程设计之客户与服务器程序的同步与通信机制的设计(四)信号量
- 空格分隔输出(信息学奥赛一本通-T1026)
- zabbix mysql 脚本路径_Zabbix监控MySQL脚本
- mysql 5.7 导入出错_mysql5.x数据库文件导入mysql5.7数据库出错解决方法
- (转)MyBatis框架的学习(四)——Mapper.xml文件中的输入和输出映射以及动态sql
- 【Elasticsearch】如何使用 Elasticsearch 6.2 搜索中文、日语和韩语文本 - 第 3 部分:语言检测工具
- java微信支付异步通知_Java中微信支付退款异步通知解码
- 首届 “女生科技体验节” 大爆料!
- 我的世界网易版显示dns服务器错误怎么弄,手机显示DNS异常怎么办
- 2021年浏阳市五中高考成绩查询,浏阳市2021年“三考”增加考生万余名
- 用MATLAB求定积分
- 声网(agora)音视频通话sdk—微信小程序demo
- html页面怎么记住密码,使用html的localstorage实现登录页面的记住密码功能
- DOTween的常用方法