我们先来创建两个活动A 和 B 然后在A启动B

(小伙伴们这里要注意一点,这两个活动的创建都是默认的,没有去更改  AndroidManifest.xml配置 文件里Activity的android:launchMode=""  该属性 是没有设置的  singleTop/singleTask/singleInstance/standard [默认是这模式])

如果没有打印过的伙伴会觉得这个onStop和onDestory的生命周期走向很奇怪,这里一点都不奇怪的哈,都是要等待第二个生命周期的onResume启动完成后才会自行的

A启动B的整个启动生命周期我们了解,那我们来做另一个奇怪的设想操作,A启动B 然后  B启动B 看一下生命周期会是一个什么样的情况,嘿嘿,这里有人会说你的思想真奇葩,你错了,不是我奇葩,是你没有使用到这样的场景

来看运行效果

注意圆圈位置,对,你没看错,它把整个流程重新执行了一遍,   你可能会说,大惊小怪,不就重新执行了一遍了,对我程序没影响,小伙子你还是太年轻了啊;对于一些低内存的机器这样一直占用内存是会造成卡顿的啊
而且你B打开B (或者另一种场景B打开C,然后C打开D,然后D需要直接回到B) 本来就是打开同一个界面有必要重新创建一个吗,答案当然是没有必要利用生命周期onReStart/onStart/onResume 其中之一更新UI就行了
嗯,你只是说了用生命周期更新UI没说怎么解决这个重新创建的问题啊


不得不说,google爸爸真是想的秒啊,google:我就知道这玩意会抛出这么个性能问题BUG ,还好我把BUG修复了,方法就是在AndroidManifest.xml的Activity的属性标签添加android:launchMode=""   属性,嘿嘿"
秒啊,有BUG就通过迭代修复,嘿嘿,这不就是我对产品经理经常说的话吗^ _ ^


OK,我们来看一下,这个android:launchMode=" " 都可以设置哪些值

singleTop
singleTask
singleInstance
standard (默认)

既然standard 是默认的那它的情况就跟我们上边演示的情况一样,可以忽略了
来我们来看一下singleTop的情况    (A----->B------->B)   注:"------>"  表示打开动作

singleTop    

我们可以看到B二次打开的时候走的生命周期其实是没有走onCreate() 和 onStart()方法的  仅仅走了 onResume方法   就是说 B打开B之前B 已经是栈顶元素了,而设置的启动模式刚好也是栈顶模式SingleTop,于是他就不会重新创建一个新的对象
也就不会重新走一遍所有的流程了.

我们来继续看看singleTask  栈内唯一       A--------> B -------->C------------->B
singleTask
我们把B的启动模式设置为sigleTask

可以看到singleTask 与 singleTop 一样能实现不重复创建Activity的效果,但是singleTask的使用范围要比singleTop的广,所以常见情况使用singleTask就够用了,
你可能会说,不是实现不重复创建Activity对象不就行了,你还是太天真,
你看开启的位置,
注意重点来了,五号装逼犯他又要出来了

我上面写的singleTop模式时是    B 自己打开的 B  也就是自己打开自己  (能明白吧)
singleTask是  B打开后,  C 后面打开的 B  也就是别的活动打开的B ,嘿嘿,是不是很秒

来,我们再来看看最后一种模式
singleInstance              A--------->B ----------->C -------------------->B

认真看,这个模式下是会重新创建Activity对象的,而且他会把栈内存在的一个A直接干死了,而其他模式却不会,是不是很神奇,哈哈,然后他的生命周期执行顺序跟默认的standard 很像,但是standard不会把栈内的活动干死,
嘿嘿,用它来做结束程序是最完美不过了,直接不需要自己写Activity的管理,哈哈哈
可能你会问怎么用,我泰马直接一巴掌过去,

你可以创建一个空的Activity,结束时直接掉用这个空的Activity然后在空的Activity里边finish,这不很完美吗,嘿嘿

对你有用,记得点赞加收藏,你的靓仔前辈敬上.

Activity生命周期走向分析相关推荐

  1. 喜闻乐见之Activity生命周期

    Activity的生命周期,对于Android开发者来说,再熟悉不过了.但是我们接触到的资料,绝大部分都只是谈了一些表面上的东西,例如各个回调的顺序等等.本文试图换个角度来讲解,也希望对各位读者有所帮 ...

  2. activity生命周期及数据保存

    为什么80%的码农都做不了架构师?>>>    public class ActivityLife extends Activity {// 在Activity生命周期开始时被调用@ ...

  3. framework之Activity 生命周期解析(基于Android11源码)

    引言 上一篇讲了Activity的创建过程(没看过的小伙伴移步 点我前往).由于篇幅的问题,只分析到OnCreate周期,那这一篇就接着讲余下部分的周期. 在高版本上,activity的周期都是以事务 ...

  4. activity 生命周期_死磕Android_App 启动过程(含 Activity 启动过程)

    1. 前言 Activity是日常开发中最常用的组件,系统给我们做了很多很多的封装,让我们平时用起来特别简单,很顺畅.但是你有没有想过,系统内部是如何启动一个Activity的呢?Activity对象 ...

  5. Android 插件化原理解析——Activity生命周期管理

    之前的 Android插件化原理解析 系列文章揭开了Hook机制的神秘面纱,现在我们手握倚天屠龙,那么如何通过这种技术完成插件化方案呢?具体来说,插件中的Activity,Service等组件如何在A ...

  6. Android apk动态加载机制的研究(二):资源加载和activity生命周期管理

    转载请注明出处:http://blog.csdn.net/singwhatiwanna/article/details/23387079 (来自singwhatiwanna的csdn博客) 前言 为了 ...

  7. 安卓学习笔记06:Activity生命周期与启动模式

    文章目录 零.学习目标 一.Activity生命周期 1.了解Activity生命周期 2.Activity生命周期简化图 (1)Activity存在与否 (2)Activity可见与否 (3)Act ...

  8. Activity生命周期详解及最佳实践

    前言 该文章来自一个开源项目,致力于翻译Google官方文档,很棒,已经有成果了.PDF版本可以去这里下载http://hukai.me/eBooks/AndroidTrainingCHS.pdf,以 ...

  9. Activity生命周期的三种状态

    生命周期就是一个对象从创建到销毁的过程,每一个对象都有自己的生命周期.同样,Activity也具有相应的生命周期,Activity的生命周期中分为三种状态,分别是运行状态.暂停状态和停止状态.接下来将 ...

  10. Activity生命周期和启动模式

    Activity生命周期和启动模式 1. 典型情况下的生命周期分析 完整生存期:onCreate()-onDestory(),分别标识着Activity的创建和销毁,并且只可能有一次调用. 可见生存期 ...

最新文章

  1. CString与LPCWSTR的转化
  2. 鲲鹏凌云,并行科技Paramon通过华为云鲲鹏云服务兼容性认证
  3. 阿里云云计算 7 ECS的产品优势
  4. Python解释器配置设置
  5. 黑客都怎么制作外挂?C++黑客编程收集的源码集合
  6. 基于MTK方案AG3335芯片设计的款超小型超低功耗定位器
  7. 【生信技能树2020-10-31】单细胞数据挖掘学习笔记-1.1 下载、探索数据
  8. 基于中国天气网的数据库设计与开发(python+MySQL)
  9. 南京工程学院计算机博士,南京工程学院高层次人才引进工作实施办法(修订)...
  10. Oracle Analyze
  11. Hankson 的趣味题
  12. andserver FileBrowser 图片浏览
  13. Ubuntu 16.04版本的 网易云音乐 linux 安装包资源以及下载过程
  14. sql经典面试题50题
  15. 【小白学前端】化腐朽为神奇-HTML+CSS3实现电影票(day01-3)
  16. Django之restframework中路由Routers
  17. oeasy教您玩转 linux 010213 中文 fcitx
  18. Web前端:2022年十大React表库
  19. JSON.parse()、JSON.stringify、 parseInt()
  20. Paper Game

热门文章

  1. Qualcomm笔记
  2. zkPorter:Layer-2 的可组合可扩展性
  3. JVM内存分配担保机制
  4. DJ8-2 主存储器的组织
  5. 从傅里叶变换的角度谈宿命论
  6. wget 下载网站所有文件
  7. 甘肃省学业水平测试计算机,甘肃省信息技术学业水平测试试卷
  8. 2022 CNCC 中国计算机大会参会总结
  9. 开放平台-web实现QQ第三方登录
  10. 用网盘和git来管理资源