SingleTask模式在已经存在Activity实例时再次启动activity生命周期:
Activiyt的普通启动模式每次利用startActivity都会创建新的Activity实例,有些场景需要栈中只有一个Activity实例,类似app的主页MainActivity,这时就需要用到SingleTask。

SingleTask模式下会首先判断栈内是否已经存在该Activity的实例,如果存在实例,会将该实例之上所有的activity出栈(销毁),把该实例置于栈顶。如果不存在实例,才会重新创建该Activity的新实例,并且入栈。

普通的Activity启动后的生命周期为onCreate-》onstart-》onresume,每次利用Intent启动一个Activity都会创建新的实例,都会走上面的生命周期。

当launchMode设置为singleTask的时候,启动这个Activity时如果栈中已经存在一个实例,系统不会再创建新的实例,会直接传递到已有的Activity实例,这时不会再走onCreate方法而是调用onNewIntent方法,之后直接调用onstart,onresume,完整的过程为onNewIntent->onStart->onResume。

onNewIntent(Intent intent)方法参数为intent,传递的操作就在这个intent中,而不是onCreate中利用getIntent中获取的Intent。同步这个新的Intent需要利用 setIntent(intent);之后利用getIntent获取到的Intent就和onNewIntent的一致了。
附加:
如果在Activity上显示dailog,当dialog遮挡Activity的界面时会不会触发Activity的生命周期,答案是不会触发ActivityonPause,onResume等。

Activity 设置SingleTask模式,当栈中已有Activity实例时的生命周期相关推荐

  1. android点击跳转前清除任务栈中的所有activity

    在跳转前加下面两行代码 intent.setFlags(intent.FLAG_ACTIVITY_NO_HISTORY); //当离开该Activity后,该Activity将被从任务栈中移除 int ...

  2. Activity为singleTask模式时的生命周期

    Activity为singleTask模式时的生命周期 Activity A:android:launchMode="singleTask" Activity B:launchMo ...

  3. Activity在旋转屏幕时的生命周期

    一.Activity的生命周期 1.Activity生命周期中的重要方法 (1).onCreate():表示Activity已经被创建.这是Activity生命周期中的第一个方法,Activity生命 ...

  4. [react] react中发起网络请求应该在哪个生命周期中进行?为什么?

    [react] react中发起网络请求应该在哪个生命周期中进行?为什么? 异步情况可以在componentDidMount()函数中进行. 同步的情况可以在componentWillMount()中 ...

  5. vue中自定义指令、组件化、生命周期、节流和防抖、获取DOM、mint-ui简介、过渡和动画

    自定义指令: vue中通过directive方法自定义指令,如:自定义一个v-focus指令: <script>Vue.directive('focus', {//通过directive( ...

  6. 软件开发生命周期中的设计阶段_什么是软件生命周期模型?软件测试和软件开发的关系分析!...

    软件生命周期这个词,对于大部分人应该比较陌生,但却不容忽视!正因为它的重要性,才有许多不同的软件开发生命周期模型,但是它们都有一个共同的特点,那就是在生命周期中的某一时刻,软件都会被测试.今天我就和大 ...

  7. 国内android应用商城中程序隐私泄露分析,基于数据生命周期的Android应用程序隐私泄露分析技术研究...

    摘要: 目前,随着智能手机应用市场的发展与成熟,用户在方便地使用各类型应用的过程中亦会产生大量隐私数据,隐私泄露已成为智能手机平台的一个严重安全问题.由于Android平台的开放性,该问题更为突出,不 ...

  8. android activity 切换屏幕方向时的生命周期

    1.不设置Activity的Android:configChanges时,切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次 2.设置Activity的android:configCh ...

  9. C语言中全局变量和局部变量,作用域与生命周期的相关问题。

    C语言中变量分为局部变量和全局变量: 在程序的开头定义的是全局变量,在函数内部定义的是局部变量. 在这里涉及2个概念,作用域与生命周期. 作用域指的是描述变量在哪段代码中有效:生命周期指的是变量什么时 ...

  10. 实现多线程、进程、线程、设置和获取线程名称、线程调度、线程控制、线程生命周期、同步代码块、线程安全的类、Lock锁、生产者消费者模式

    实现多线程:

最新文章

  1. go-kit微服务学习-官方示例stringsvc学习
  2. list、dict、tuple的一些小操作总结
  3. linux Pytorch C++ 环境搭建
  4. Android的开机流程
  5. 在Window上使用Jenkins自动部署和上传快照Java工件
  6. php业务的适用场景,根据业务场景寻找合适解决方案(PHP)?
  7. 只因少写一个判空,我的代码上线后炸了!
  8. Windows 8实用窍门系列:11.Windows 8 中的Toast Tile Badge通知
  9. 【转】javascript Object使用Array的方法
  10. 安卓dj专业打碟机软件_今日软件 | 安卓壁纸、APEX启动器、亿寻、鲁大师、乐秀、猎曲奇兵、Edge、AI图片放大、专业屏幕录像...
  11. BackTrack3(BT3破解wifi密码)
  12. java wav 转 mp3_java,wavToMP3格式转换
  13. 《ClickHouse原理解析与应用实践》读书笔记(7)
  14. 英雄传说空之轨迹人物介绍
  15. 逻辑回归优化技巧总结(全)
  16. 如何解决E680i经常有内存不足提示的问题
  17. 模糊系统—模糊数学简单概念
  18. 笔记本正常联网,浏览器无法访问网页问题
  19. t30服务器的技术性能,DELL PowerEdge T30微塔式服务器 配置参数
  20. vue 实现 发票打印功能

热门文章

  1. [转] 基于MBR 的bootkit的进展 鬼影-TDL4-BMW
  2. 黑莓手机使用手册【转】
  3. 排错解决:etcd节点掉线后(code=exited, status=1/FAILURE),如何加入
  4. MYSQL 使用case when 完成对业务枚举的查询出参
  5. 知识点1--认识SSM框架并准备项目
  6. Protel99SE 50个常见问题解决方法与技巧
  7. mysql 插入毫秒数据_MySQL存储毫秒数据的方法
  8. 电脑没有声音怎么安装声卡驱动?驱动人生声卡驱动安装失败原因
  9. 多电压等级计算机潮流计算,电力系统潮流计算
  10. springboot+vue整合百度的Ueditor(保姆级教程)