activity(Activity的简单介绍)

懵懂先生 网文资讯activity(Activity的简单介绍)已关闭评论131阅读模式

文章源自略懂百科-http://wswcn.cn/25064.html

本文为个人学习笔记分享,没有任何商业化行为,对其他文章的引用都会标记。如有侵权行为,请及时提醒更正!如需转载请表明出处文章源自略懂百科-http://wswcn.cn/25064.html

面试的时候我们总会被问到Activity的生命周期。我去呀,那么多怎么记得住呀,今天这一篇是妈妈不担心系列的首篇,通过一些细节的讲解,面试的时候可以再也不用担心面试官问生命周期了。文章源自略懂百科-http://wswcn.cn/25064.html

带着问题去看Activity可以更加方便我们去理解它。文章源自略懂百科-http://wswcn.cn/25064.html

问题1 正常情况下Activity的生命周期文章源自略懂百科-http://wswcn.cn/25064.html

问题2: AActivity启动BActivity,他们的生命周期?文章源自略懂百科-http://wswcn.cn/25064.html

问题2:透明主题的Activity生命周期文章源自略懂百科-http://wswcn.cn/25064.html

问题3:异常情况下Activity的生命周期(Configuration发生改变)文章源自略懂百科-http://wswcn.cn/25064.html

问题4:多进程启动Activity的生命周期文章源自略懂百科-http://wswcn.cn/25064.html

问题5: 不同启动模式下Activity的生命周期文章源自略懂百科-http://wswcn.cn/25064.html

简单介绍一下Activity的生命周期方法文章源自略懂百科-http://wswcn.cn/25064.html

(1)onCreate:表示Activity正在被创建,这是生命周期的第一个方法。在这个方法中,我们可以做一些初始化工作,比如调用setContentView去加载布局文件,初始化Activity所需的数据。文章源自略懂百科-http://wswcn.cn/25064.html

(2)onRestart:表示Activity正在重启。一般情况下,当当前Activity从不可见变为可见状态时,onRestart就会被调用。这种场景一般是用户行为导致的,比如用户按Home键切换到桌面,或者打开一个新的Activity,这时当前的Activity就会暂停,也就是onPause和onStop会被调用,接着用户又回到这个Activity,就会出现这种情况。文章源自略懂百科-http://wswcn.cn/25064.html

(3)onStart:表示Activity正在被启动,即将开始,这时Activity已经可见了,但还是没有出现在前台,还无法和用户交互。这个时候可以理解为Activity已经显示出来了,但是我们还看不到。文章源自略懂百科-http://wswcn.cn/25064.html

(4)onResume:表示Activity已经可见了,并且出现在前台并开始活动。要注意这个和onStart的对比,onStart和onResume都表示Activity已经可见,但是onStart的时候Activity还在后天,onResume的时候已经到前台了。文章源自略懂百科-http://wswcn.cn/25064.html

(5)onPause:表示Activity正在停止,正常情况下,紧接着onStop会被调用。在特定的情况下,如歌这个时候快速的再回到这个Activity,那么onResume会被调用。此时可以做一些数据存储、停止动画等工资,但注意到不能太耗时,因为这会影响到新的Activity的显示,onPause必须先执行,新的Activity才会执行onResume.文章源自略懂百科-http://wswcn.cn/25064.html

(6)onStop:表示Activity即将停止,可以做一些稍微重量级的回收工作,同样不能太耗时。文章源自略懂百科-http://wswcn.cn/25064.html

(7)onDestory:表示Activity即将被销毁,这时Activity生命周期中的最后一个回调,在这里,我们可以做一些回收工作和最终的资源释放。文章源自略懂百科-http://wswcn.cn/25064.html

问题1:正常情况下Activity的生命周期?文章源自略懂百科-http://wswcn.cn/25064.html

针对一个Activity,第一次启动,调用流程:onCreate->onStart->onResume.当用户打开新的Activity或者切换到桌面时,调用流程:onPause->onStop当用户再次回到Activity时,调用流程:onRestart->onStart->onResume.当用户按back键回退时,调用流程:onPause->onStop->onDestroy当Activity被系统回收后再次打开,生命周期回调过程和第一条一致,注意只是生命周期方法一样,不代表所有过程都一样。(再异常状态时会讲)文章源自略懂百科-http://wswcn.cn/25064.html

从整个生命周期来说,onCreate和onDestroy是配对的,分别标识着Activity的创建和销毁,并且只可能有一次调用。从Activity是否可见来说,onStart和onStop是配对的,随着用户的操作或者设备屏幕的点亮,这两个方法会被调用多次;从Activity是否前台来说,onResume和onPause是配对的,随着用户操作或者设备屏幕的点亮和熄灭,这两个方法会被调用多次。文章源自略懂百科-http://wswcn.cn/25064.html

问题2: MainActivity启动BActivity,他们的生命周期?文章源自略懂百科-http://wswcn.cn/25064.html

启动MainActivityE/Lifecycle: MainActivity:onCreate
E/Lifecycle: MainActivity:onStart
E/Lifecycle: MainActivity:onResume文章源自略懂百科-http://wswcn.cn/25064.html

在MainActivity启动BActivity文章源自略懂百科-http://wswcn.cn/25064.html

E/Lifecycle: MainActivity:onPause
E/Lifecycle: BActivity:onCreate
E/Lifecycle: BActivity:onStart
E/Lifecycle: BActivity:onResume
E/Lifecycle: MainActivity:onStop文章源自略懂百科-http://wswcn.cn/25064.html

从上面可以看出A启动B会先调用A的onPause,然后才会调用B的onCreate、onStart、onResume。然后调用A的onStop文章源自略懂百科-http://wswcn.cn/25064.html

返回MainActivityE/Lifecycle: BActivity:onPause
E/Lifecycle: MainActivity:onRestart
E/Lifecycle: MainActivity:onStart
E/Lifecycle: MainActivity:onResume
E/Lifecycle: BActivity:onStop
E/Lifecycle: BActivity:onDestroy文章源自略懂百科-http://wswcn.cn/25064.html

同理再回退的时候,也是先调用B的onPause,然后调用MainActivity的onRestart、onStart、onResume;然后调用BActivity的onStop、onDestroy文章源自略懂百科-http://wswcn.cn/25064.html

问题3:透明主题的Activity生命周期?文章源自略懂百科-http://wswcn.cn/25064.html

接下来我们将BActivity的主题改为透明主题文章源自略懂百科-http://wswcn.cn/25064.html

//AndroidManifest.xml
启动MainActivityE/Lifecycle: MainActivity:onCreate
E/Lifecycle: MainActivity:onStart
E/Lifecycle: MainActivity:onResume在MainActivity启动BActivityE/Lifecycle: MainActivity:onPause
E/Lifecycle: BActivity:onCreate
E/Lifecycle: BActivity:onStart
E/Lifecycle: BActivity:onResume文章源自略懂百科-http://wswcn.cn/25064.html

我们发现启动透明Activity,与正常的不一样,不会调用MainActivity的onStop!!!文章源自略懂百科-http://wswcn.cn/25064.html

返回MainActivityE/Lifecycle: BActivity:onPause
E/Lifecycle: MainActivity:onResume
E/Lifecycle: BActivity:onStop
E/Lifecycle: BActivity:onDestroy文章源自略懂百科-http://wswcn.cn/25064.html

而且返回的时候不会调用MainActivity的onRestart和onStart!!!文章源自略懂百科-http://wswcn.cn/25064.html

问题四:异常情况下Activity的生命周期(Configuration发生改变)文章源自略懂百科-http://wswcn.cn/25064.html

当我们进行横竖屏切换时,Activity的生命周期是怎样的呢?文章源自略懂百科-http://wswcn.cn/25064.html

E/Lifecycle: MainActivity:onPause
E/Lifecycle: MainActivity:onStop
E/Lifecycle: MainActivity:onDestroy
E/Lifecycle: MainActivity:onCreate
E/Lifecycle: MainActivity:onStart
E/Lifecycle: MainActivity:onResume文章源自略懂百科-http://wswcn.cn/25064.html

当我们竖屏切横屏时:先调用onPause->onStop->onDestory->onCreate->onStart->onResume。文章源自略懂百科-http://wswcn.cn/25064.html

发送横竖屏切换时,Android系统会销毁当前Activity并重新创建Activity。文章源自略懂百科-http://wswcn.cn/25064.html

拓展:如果透明Activity横竖屏切换的生命周期是什么?文章源自略懂百科-http://wswcn.cn/25064.html

E/Lifecycle: BActivity:onPause
E/Lifecycle: BActivity:onStop
E/Lifecycle: BActivity:onDestroy
E/Lifecycle: BActivity:onCreate
E/Lifecycle: BActivity:onStart
E/Lifecycle: BActivity:onResume
E/Lifecycle: MainActivity:onStop
E/Lifecycle: MainActivity:onDestroy
E/Lifecycle: MainActivity:onCreate
E/Lifecycle: MainActivity:onStart
E/Lifecycle: MainActivity:onResume
E/Lifecycle: MainActivity:onPause文章源自略懂百科-http://wswcn.cn/25064.html

头皮发麻呀,如果我们不去敲代码验证它,你能知道它有多少坑么?文章源自略懂百科-http://wswcn.cn/25064.html

如果Activity是透明背景的Activity,它并没有多大的区别,最大的区别的就是透明Activity的下面的Activity会销毁重建并调用onPause方法文章源自略懂百科-http://wswcn.cn/25064.html

不透明的Activity切换横竖屏不会影响后面的Activity的生命周期,大家可以写代码验证,由于篇幅和时间的原因就不一一描述了。文章源自略懂百科-http://wswcn.cn/25064.html

Android为这种情况提供了现场保护方法,为了方便开发人员对一些突发情况的处理,保证数据的完整性。onSaveInstanceState和onRestoreInstanceState详细的细节不是本篇的范畴,有兴趣的同学可以自行搜索文章源自略懂百科-http://wswcn.cn/25064.html

问题五:多进程启动Activity的生命周期?文章源自略懂百科-http://wswcn.cn/25064.html

在AndroidManifest.xml文件中为BActivity设置为在其他进程开启。文章源自略懂百科-http://wswcn.cn/25064.html

在MainActivity启动BActivity//进程:com.liupei.activity_life
E/Lifecycle: MainActivity:onPause
E/Lifecycle: MainActivity:onStop
//进程:com.liupei.activity_life:two
E/Lifecycle: BActivity:onCreate
E/Lifecycle: BActivity:onStart
E/Lifecycle: BActivity:onResume文章源自略懂百科-http://wswcn.cn/25064.html

好像没什么区别,只是打印在不同的进程。文章源自略懂百科-http://wswcn.cn/25064.html

问题六: 不同启动模式下Activity的生命周期文章源自略懂百科-http://wswcn.cn/25064.html

写到这里已经1.30了,实在挺不住了。明天再更新把~~~文章源自略懂百科-http://wswcn.cn/25064.html

整理写作不易,请小伙伴多多支持,麻烦请点赞关注支持一下,。文章源自略懂百科-http://wswcn.cn/25064.html

文章源自略懂百科-http://wswcn.cn/25064.html

懵懂先生
  • 本文由 发表于 2022年8月5日 14:51:31
  • 转载请注明:http://wswcn.cn/25064.html
网文资讯

小宝宝(0~1岁宝宝吃睡玩作息指南)

很多宝妈都说,有孩子后就没睡过一个好觉,还有的直接神经衰弱,被娃整的崩溃。 想让娃养成规律的作息习惯,咋就这么难呢? 其实,想让宝宝养成规律作息最关键的因素就是吃-玩-睡。也就是说,白天的日常生活按照...
网文资讯

这花耐阴又好养可以吞掉一只老鼠(植物也爱吃肉)

很多花友一到秋冬就发愁,因为家里光照不充足,感觉啥花都养不好,这咋办呢?今天,花花就来给大家推荐5款耐阴花,这花不仅超耐阴,而且压根不招虫子,反而能把小虫子全吃掉!竟然这么神奇?赶紧一起来看看吧! 捕...
网文资讯

微信下载安装(PC版微信如何下载)

日常生活工作中,微信是现在使用最多的即时通讯软件之一,应该很多小伙伴们都在用吧,特别是网上支付推出之后,人们的生活就更离不开微信了。那如果想要在电脑上使用微信,该怎么下载PC版的微信呢?下面就小编带小...
网文资讯

鱼塘征收补偿明细表(鱼塘被征用怎么补偿)

在我们的现实生活当中,国家征收土地的话,通常情况下所进行的都是为了社会公共利益的需要,当然征收土地的类型也是各种各样的,比如说也存在着鱼塘的征收,当然鱼塘征收的话,可能会涉及到一个资金的问题,那么,鱼...