大家好,今天给各位分享深入解析Android应用开发中的Activity生命周期的一些知识,其中也会对进行解释,文章篇幅可能偏长,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在就马上开始吧!
(1)onCreate:表示Activity正在创建中。在该方法中可以做一些初始化工作,比如调用setContentView加载界面布局资源、初始化Activity所需的数据等。
(2)onStart:表示Activity正在启动。此时,Activity已经可见,但还没有出现在前台,无法与用户交互。这个时候其实可以理解为Activity已经显示出来了,只是我们还看不到而已。即当Activity由不可见变为可见时调用该方法。
(3)onResume:表示该Activity已经可见,出现在前台并启动Activity,并且可以与用户交互。注意这个和onStart的对比。 onStart和onResume都表示Activity已经可见,但是onStart时Activity仍处于后台,仅在onResume时才显示在前台。
(4)onPause:表示Activity正在停止。正常情况下,onStop会立即被调用。此时,Activity仍然可见。如果返回当前Activity,onResume将会被调用。例如,如果用户启动一个Dialog Activity,并且没有完全覆盖原来的Activity,那么原来的Activity就会进入onPause状态。这时候返回原来的Activity就会调用onResume。我们通常会在这个方法中释放一些CPU资源,保存一些关键数据,但是这个方法一定要快,否则会影响新Activity的显示。必须先执行onPause,然后再执行新Activity的onResume。
(5)onStop:表示Activity即将停止。执行该方法后,Activity将进入完全不可见的状态。你可以做一些重量级的回收工作,这应该不会太耗时。
(6)onDestroy:表示activity即将被销毁。这是Activity 生命周期中的最后一个回调。在这里,我们可以做一些回收工作和最终的资源释放。
(7)onRestart:表示Activity正在重新启动。正常情况下,当当前Activity再次从不可见变为可见时,onRestart会被调用。这种情况一般是用户行为造成的。例如,用户按下Home按钮切换到桌面或者用户打开一个新的Activity。此时,当前Activity会被挂起,即执行onPause和onStop,然后用户返回。当到了这个Activity的时候,就会出现这种情况。
一般情况下,Activity常见的生命周期只有以上7种,除了onRestart方法之外,这7种方法都是相互关联的,所以Activity可以分为3种生命周期。
完整的一生。 Activity在onCreate方法和onDestroy方法之间经历的就是完整的生命周期。一般情况下,一个Activity会在onCreate方法中完成各种初始化操作,在onDestroy方法中完成内存释放操作。
寿命可见。 Activity在onStart方法和onStop方法之间经历的是可见生命周期。在可见生命周期内,Activity 始终对用户可见,即使它可能无法与用户交互。我们可以利用这两种方法来合理管理用户可见的资源。例如,在onStart方法中加载资源,在onStop方法中释放资源,以保证停止的Activity不会占用过多的内存。
前台生命周期。 Activity在onResume方法和onPause方法之间经历的是前台生命周期。在前台生命周期中,该Activity 始终处于运行状态。这时候Activity就可以和用户进行交互了。我们平常见到、接触最多的就是这种状态下的活动。
为了更好的理解各种Activity生命周期的切换过程,Android官方提供了一张Activity周期示意图,如图:
图1-1是在上图的基础上制作的。这里再做一些补充说明,分为以下几种情况。
(1)对于特定的Activity,第一次启动时,回调如下:onCreate -onStart -onResume。
(2)当用户打开新的Activity或者切换到桌面时,回调如下:onPause -onStop。这里有一个特殊情况。如果新的Activity采用透明主题,则当前Activity不会回调onStop。
(3)当用户再次返回原来的Activity时,回调如下:onRestart -onStart -onResume。
(4)当用户按Back键返回时,回调如下:onPause -onStop -onDestroy。
(5)当Activity被系统回收后再次打开时,生命周期方法回调流程与(1)相同。注意,生命周期方法是一样的,并不意味着所有进程都是一样的。
异常情况下的生命周期分析
1、资源相关的系统配置变化导致Activity被杀死并重新创建
当系统配置发生变化时,Activity将会被销毁,它的onPause、onStop、onDestroy都会被调用。由于Activity在异常情况下终止,系统会调用onSaveInstanceState来保存当前的Activity状态。需要强调的是,该方法只有在Activity异常终止时才会出现。正常情况下,系统不会回调该方法。当Activity重新创建时,系统会调用onRestoreInstanceState,并将Activity销毁时onSaveInstanceState方法保存的Bundle对象作为参数传递给onRestoreInstanceState和onCreate方法。 onRestoreInstanceState和onCreate方法的区别在于:一旦onRestoreInstanceState被调用,其参数Bundle savingInstanceState必须有值,不需要额外判断是否为空;但onCreate 不起作用。如果onCreate正常启动,其参数Bundle savingInstanceState为null。因此必须进行额外的判断。
2.资源内存不足导致低优先级Activity被杀死
活动按照优先级从高到低可以分为以下三种类型:
(1)前台Activity——正在与用户交互的Activity具有最高优先级。
(2) Activity —— 可见但不在前台。例如,Activity中弹出对话框,导致Activity可见但处于后台,无法直接与用户交互。
关于深入解析Android应用开发中的Activity生命周期的内容到此结束,希望对大家有所帮助。
【深入解析Android应用开发中的Activity生命周期】相关文章:
2.米颠拜石
3.王羲之临池学书
8.郑板桥轶事十则
用户评论
每次启动app的时候都会触发Activity的生命周期的变化吧?
有15位网友表示赞同!
想彻底理解Android开发就必须把Activity的生命周期搞明白啊!
有11位网友表示赞同!
这个话题很重要,很多问题在代码开发过程中都是因为对生命周期的不理解导致的哦~
有12位网友表示赞同!
看这标题我就想起上个项目遇到过类似的坑了!
有16位网友表示赞同!
Android应用的设计确实需要考虑到Activity的生命周期管理。
有19位网友表示赞同!
学习Android,这个是必备的基础知识啊。
有9位网友表示赞同!
看来我得好好复习一下Activity的生命周期了!
有14位网友表示赞同!
终于有人出这方面的文章了,我一直想搞明白这个机制的!
有18位网友表示赞同!
活动的变化太频繁了,有时候代码逻辑都跟不上呢!
有13位网友表示赞同!
希望这篇文章能解释清楚每个生命周期方法的作用。
有15位网友表示赞同!
掌握Android开发基础就要好好理解Activity的生命周期!
有17位网友表示赞同!
这个知识点很重要,做安卓app开发的时候经常会遇到!
有7位网友表示赞同!
感觉学习Android最难的是这个方面吧,代码都写着却不知道为什么出错!
有10位网友表示赞同!
希望能详细讲解每个状态的变化,以及什么时候调用哪些方法比较关键!
有14位网友表示赞同!
分享文章内容肯定能帮助到很多和我一样遇到过生命周期问题的安卓开发者!
有11位网友表示赞同!
学习Android开发的过程中发现Activity的生命周期确实挺重要的。
有6位网友表示赞同!
看了标题就感觉这篇文章可以好好看一看,之前一直没弄明白这些概念...
有14位网友表示赞同!
想要写出高质量的Android应用,必须深入理解Activity的生命周期!
有17位网友表示赞同!
安卓开发确实需要注重生命周期的管理。
有20位网友表示赞同!