问题描述

最近测试关于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问题相关推荐

  1. android:launchMode的四种方式

    Activity一共有以下四种launchMode: standard singleTop singleTask singleInstance 1.standard standard模式是默认的启动模 ...

  2. Android 监听home键(android:launchMode=singleTask 与 onNewIntent(Intent intent) 的用法

    android:launchMode="singleTask" 和 onNewIntent(Intent intent)两个特性,现总结一下经验: android:launchMo ...

  3. android LaunchMode之SingleTask

    2019独角兽企业重金招聘Python工程师标准>>> 昨天看了一下SingleTask的LaunchMode,意思是说如果一个Activity在Manifest文件中的Launch ...

  4. android launchmode java代码,java – Android:launchMode = SingleTask问题

    如果你的其他活动在 Android中正常宣布活动默认值,那么回到你的应用程序应该带你到你离开的同一个活动(使用硬件主页按钮) 但请记住,Android系统在需要系统资源时会杀死应用程序.因此,当您转到 ...

  5. Android LaunchMode

    source code :https://github.com/fantasyRqg/MytestApp/tree/AndroidLaunchModeTest 以下文字摘自 Tasks and Bac ...

  6. Android关于Task的一些实践之SingleTask, SingleInstance和TaskAffinity

    上一篇文章粗略地介绍了一下关于Android中Task的基本知识.只是实践才是检验真理的唯一标准,所以.今天就来试验一下Task中的launchMode是否真的实现了文档所说的那样. 首先.定义三个A ...

  7. 【Android】Activity的四种launchMode

    转自:http://blog.csdn.net/liuhe688/article/details/6754323 合抱之木,生於毫末:九層之台,起於累土:千里之行,始於足下.<老子> 今天 ...

  8. Activity生命周期Android,横屏切换不重新创建Activity, Activity的四种launchMode

    Activity生命周期 1.启动Activity:系统会先调用onCreate方法,然后调用onStart方法,最后调用onResume,Activity进入运行状态. 2.当前Activity被其 ...

  9. 解决Android singleInstance 按home退到桌面从桌面点击应用图标又从启动页重新启动的问题

    解决Android singleInstance 按home退到桌面从桌面点击应用图标又从启动页重新启动的问题 最近项目中有处理腾讯IM视频语音聊天切换到悬浮窗功能, 初解决方案: 语音/视频通话界面 ...

最新文章

  1. Java开发环境的搭建以及使用eclipse从头一步步创建java项目
  2. 普通卷积armv7-neon指令集实现—QNNPACK
  3. python缩进格式作用_关于自动缩进格式问题,高手帮忙!
  4. java如何避免注释重复_Java 8中的可重复注释
  5. spring使用注解@Scheduled执行定时任务
  6. 隐马尔科夫模型(HMM)笔记(公式+代码)
  7. 专业课程设计之客户与服务器程序的同步与通信机制的设计(四)信号量
  8. 空格分隔输出(信息学奥赛一本通-T1026)
  9. zabbix mysql 脚本路径_Zabbix监控MySQL脚本
  10. mysql 5.7 导入出错_mysql5.x数据库文件导入mysql5.7数据库出错解决方法
  11. (转)MyBatis框架的学习(四)——Mapper.xml文件中的输入和输出映射以及动态sql
  12. 【Elasticsearch】如何使用 Elasticsearch 6.2 搜索中文、日语和韩语文本 - 第 3 部分:语言检测工具
  13. java微信支付异步通知_Java中微信支付退款异步通知解码
  14. 首届 “女生科技体验节” 大爆料!
  15. 我的世界网易版显示dns服务器错误怎么弄,手机显示DNS异常怎么办
  16. 2021年浏阳市五中高考成绩查询,浏阳市2021年“三考”增加考生万余名
  17. 用MATLAB求定积分
  18. 声网(agora)音视频通话sdk—微信小程序demo
  19. html页面怎么记住密码,使用html的localstorage实现登录页面的记住密码功能
  20. DOTween的常用方法

热门文章

  1. Matlab画线实例图
  2. .net中XML编程总结
  3. Dapper+SqlServerCe部署
  4. python 测试用例
  5. js中bind、call、apply函数的用法
  6. Redis笔记之常用命令
  7. Linux培训教程 Git在linux下的使用
  8. 使用phpize安装php模块
  9. 上周热点回顾(10.1-10.7)
  10. ip_vs实现分析(7)