专栏名称: 安卓开发精选
伯乐在线旗下账号,分享安卓应用相关内容,包括:安卓应用开发、设计和动态等。
目录
相关文章推荐
鸿洋  ·  务必立即拿下软考证(政策红利) ·  8 小时前  
复利大王  ·  冷暴力女王,翻车了 ·  10 小时前  
复利大王  ·  头等舱的空姐 ·  昨天  
鸿洋  ·  2025 Google I/O 带来的 ... ·  2 天前  
复利大王  ·  工行软开不续签? ·  2 天前  
51好读  ›  专栏  ›  安卓开发精选

Activity 的 Task 以及 launchMode 研究

安卓开发精选  · 公众号  · android  · 2016-09-03 08:14

正文

请到「今天看啥」查看全文



l aunchMode 研究


launchMode简介


launchMode 是Activity类的一个属性,该属性包括4个具体值:standard、singleTop、singleTask、singleInstance。我们都知道,android系统中启动Activity是通过Intent实例进行的,当系统收到一个Intent的实例需要去启动指定的Activity的时候,android系统会根据目标Activity的该属性值来决定是要要创建新的该Activity实例以及如何在Task中创建该Activity的实例。这就是launchMode这个属性的作用。


launchMode 分为两个类别


  • 普通类型:用户常用的启动模式类型,大部分Activity都是这两种启动模式。包括standdard 和 singleTop 两种启动模式

  • 特殊类型:具有特殊的行为的启动模式,只针对特殊需求的使用。包括 singleTask 和 singleInstance 两种启动模式


官方文档对4中启动模式描述如下:


使用场景 启动模式 是否可以有多个实例? 简介
普通类型 standard 系统默认的启动模式,当系统接收到一个Intent实例去启动一个standard模式的Activity时,系统总是会在目标栈的顶部创建一个新的activity实例,并把Intent的实例传进去。
普通类型 singleTop 视具体情况 当系统接收到一个Intent实例去启动一个singleTop模式的Activity时,如果在目标栈的顶部存在一个该Activity的实例的话,那么系统就会重用这个Activity的实例而不创建新的实例,并回调该Activity的onNewIntent(Intent intent)方法把新的Intent实例当作方法参数传递进去;如果在目标栈的顶部没有该Activity的实例的话系统将会在新建一个Activity实例,与standard的行为就一样了。
特殊类型 singleTask 当系统接收到一个Intent实例去启动一个singleTask模式的Activity时,如果不存在该Activity的实例的话,系统会先创建一个新的Task,并在该Task底部里面创建一个该Activity的实例,随后把Intent实例传递进去;如果已经存在一个该Activity的实例的话,系统就不会再创建新的实例,那么系统就会重用这个Activity的实例而不创建新的实例,并回调该Activity的onNewIntent(Intent intent)方法把新的Intent实例当作方法参数传递进去,同时,该Activity实例所在的Task将会被调到前台
特殊类型 singleInstance 类似于singleTask,唯一不同的地方在于,singleInstance的Activity不允许自己的Task中存在其他的Activity实例,也就是说singleInstance的Activity永远是Task中唯一的一个Activity实例


launchMode 的定义







请到「今天看啥」查看全文


推荐文章
复利大王  ·  冷暴力女王,翻车了
10 小时前
复利大王  ·  头等舱的空姐
昨天
复利大王  ·  工行软开不续签?
2 天前
爱数据LoveData  ·  一个优秀数据分析师的准则
8 年前
行业研究报告  ·  双面罗永浩
8 年前