平常一直在使用startActivity做启动单个activity,但是最近发现了startActivities可以实现很多应用场景,比如点击通知可以用这个方法跳转两个activity,这样先进来就是需要展现的activity返回的时候就能跳转到启动页或者广告页,实现更好的场景交互

那么具体是怎么实现的呢?其实要知道,这个方法就是启动多个activity,那么activity的启动方式又是怎么样的呢?是同时启动还是挨个启动,是同时压入栈中吗?于是写了简单的demo来验证一下自己的想法

 fun arrayIntent(view : View) {val intent1   = Intent(this,IntentActivity1::class.java)val intent2   = Intent(this,IntentActivity2::class.java)val intent3   = Intent(this,IntentActivity3::class.java)startActivities(arrayOf(intent1,intent2,intent3))}

用startActivities同时启动3个activity

通过返回我们可以看到,先展示是Activity3,然后是Activity2,最后是Activity1

那么是不是这样的:

第一种猜测:

我startActivities时,Activity1、Activity2和Activity3都被创建了,只是依次压入栈底了,我finish掉Activity3,清除了栈顶,然后Activity2就可见了,清除Activity2之后,Activity1就到栈顶了。

第二种猜测
还是另外一种情况:先创建了Activity3,等到Activity3 finish掉之后,再开始创建Activity2,等到Activity2 finish掉之后,再创建Activity1呢?我们先打一波log看看:

IntentActivity3 onCreate
 IntentActivity2onCreate
 IntentActivity3 onDestroy
 IntentActivity1 onCreate
 IntentActivity2 onDestroy
 IntentActivity1 onDestroy

可以看到我们上述的第二种猜想是正确的,在同时启动了多个activity的时候,销毁了最上级的activity就会创建新的activity,而不是同时创建的

那么问题来了,知道了它的运行逻辑,有什么实战意义呢

需求:

当用户收到了一个通知,并且app此时在后台运行,那么当点击通知的时候希望先跳到广告业再跳到业务页面,当返回的时候,又希望回到app的首页,我们就可以用这种方式实现,因为我们的app很多初始化工作都是在广告页实现的,比如验证token啊,当少了这一步,后面的接口就有可能报错,所以这种方式保证了初始化工作的实现

Android中startActivities的准确用法相关推荐

  1. android服务绑定异步,Android中异步类AsyncTask用法总结

    本文总结分析了Android中异步类AsyncTask用法.分享给大家供大家参考,具体如下: 最近整理笔记的时候,看到有关AsyncTask不是很理解,重新疏导了一下,有在网上找了一些资料,个人不敢独 ...

  2. Android中各种Span的用法——转载

    转载一篇觉得很好的文章,在转载中成长:https://blog.csdn.net/qq_16430735/article/details/50427978 Android中各种Span的用法 前言 S ...

  3. 49.Android中各种Span的用法

    49.Android中各种Span的用法 Android中各种Span的用法 前言 SpannableStringBuilder URLSpan UnderlineSpan TypefaceSpan ...

  4. Android中的Selector的用法

    Android中的Selector主要是用来改变ListView和Button控件的默认背景.其使用方法可以按一下步骤来设计: (以在mylist_view.xml为例) 1.创建mylist_vie ...

  5. Android中与Intent相关的还有,Android中Intent的相关用法

    Intent第一个用法便是用它来进行活动之间的跳转 新建一个SecondActivity活动,并为之新建一个second_layout.XML布局文件,也创建一个Button按钮,名字为Button ...

  6. Android中Calendar类的用法总结

    Calendar是Android开发中需要获取时间时必不可少的一个工具类,通过这个类可以获得的时间信息还是很丰富的,下面做一个总结,以后使用的时候就不用总是去翻书或者查资料了. 在获取时间之前要先获得 ...

  7. android定义 task,Android中AsyncTask的基本用法

    首先: 了解一个知识点的用法,可以分四步: 第一:what是指AsyncTask的概念,从服务器下载资源,解析json文件,在开发Android应用时必须遵守单线程模型的原则: Android UI操 ...

  8. android日历总结,Android中Calendar类的用法总结

    Calendar是Android开发中需要获取时间时必不可少的一个工具类,通过这个类可以获得的时间信息还是很丰富的,下面做一个总结,以后使用的时候就不用总是去翻书或者查资料了. 在获取时间之前要先获得 ...

  9. Android中Menu的基本用法

    转自:http://blog.csdn.net/yuzhongchun/article/details/8956256 一. 使用xml定义Menu 菜单资源文件必须放在res/menu目录中.菜单资 ...

最新文章

  1. Android Studio 初体验
  2. 凸集+非凸集+凸函数+非凸函数
  3. 通过微信公众号获取用户信息(java版)
  4. Linux_文件系统磁盘分区
  5. header+php+xiazai_php使用header函数实现文件下载
  6. 探索比特币源码3-熟悉RPC接口
  7. 电商库存详解:三层(销售层、调度层、仓库层)来看库存设计
  8. springmvc配置拦截器
  9. 滑动平均_善杰告诉您初中物理学滑动变阻器的各种作用
  10. python打包成exe文件
  11. eclipse运行java快捷键_Eclipse快捷键【常用】
  12. 图文详解win7实现局域网共享文件
  13. 图灵奖Alan Kay:突破常规思维!道翰天琼认知智能机器人平台API接口大脑为您揭秘
  14. el-tree修改前面箭头图标
  15. html 多行注释的写法,web前端:JavaScript单行与多行注释书写格式
  16. gvim 换行符替换
  17. 【算法设计与分析】递归与分治 | 复习笔记
  18. 开源软件xxl-job的oracle版本
  19. 不再热衷南下打工!中国农村正在巨变,又一浪潮滚滚席卷而来
  20. win10系统如何搜索计算机,让您电脑搜索查找更方便!Win10系统建立索引教程

热门文章

  1. python3+selenium4自动化测试操作启动不同的浏览器-基础篇2
  2. MP4文件格式简要解析——图文代码并茂
  3. 思科《计算机网络》第三章考试答案
  4. Threejs创建几何体并贴材质
  5. 使用长角牛演示:防止ARP被攻击的原理和配置----------划水也别忘记学着玩
  6. 计算机科学与技术专业为什么要学物理,「物理」一定要好的14个大学专业
  7. 阿里开发者招聘节 | 面试题14:如何实现两金额数据相加(最多小数点两位)
  8. ORB-SLAM2(2) ROS下配置和编译
  9. 云计算学习4——Nova组件服务
  10. windows xp 64位版本 有些失望~