内容简介:Ps:第一次写文章,写得很入门,相当于一篇自己的学习笔记,主要是为了帮助自己记忆,如果可以帮到有需要的你,将感到非常荣幸!为了理解,跟着画了个图,有点丑!根据使用场景分为三组:
Ps:第一次写文章,写得很入门,相当于一篇自己的学习笔记,主要是为了帮助自己记忆,如果可以帮到有需要的你,将感到非常荣幸!
1. Activity的生命周期
为了理解,跟着画了个图,有点丑!
根据使用场景分为三组:
· onCreate 与 onDestroy
· onStart、onRestart 与 onStop
· onResume 与 onPause
onCreate 与 onDestroy
onCreate是Activity启动的第一步,即第一个调用的方法,在这里面,我们一般进行View的初始化操作,比如setContentView、addView以及一些控件的初始化.
为什么View的初始化要放在onCreate中?
当一个Activity启动时,可以保证onCreate只执行一次,即View的初始化操作只执行一次,而如果放在onStart 、onRestart 或 onResume中都不能保证只执行一次.
onCreate方法中还会传入一个savedInstanceStated参数,主要用于Activity在非正常情况下被销毁的时候可以保存一些临时数据,比如TextView中的Text、CheckBox的状态甚至是Fragment的实例等.
非正常情况被销毁案例:更改系统语言、系统内存不够用,屏幕方向的改变.
正常情况主观销毁:调用finish、特殊启动模式下的startActivity方法.
onDestroy这一步属于Activity生命周期的最后一步,一般代表着Activity即将被销毁,而在这一刻需要将可能造成内存泄露的资源进行释放操作,否则会导致内存泄露或者是依赖Activity所引发的一些异常情况.
onRestart 、onStart 与 onStop
onRestart是在onStop状态回到前台可见状态的时候被调用,然后再调用onStart方法 onStart是Activity每次启动的时候都一定要调用的方法.
场景:点击新闻列表(ListView)的item进行查看详情,再返回列表,会刷新获取最新的新闻列表.
操作:在onStart中进行刷新获取最新列表,如果在onRestart中操作,第一次进入页面的时候不能刷新,因为首次进入页面只调用onStart方法,而不调用onRestart方法,所以应该放在onStart中执行.
onStop是当Activity在前台不可见的时候被调用.
onResume 与 onPause
onResume是在onPause调用之后,回到可交互状态时调用的方法,Activity首次创建时也是调用该方法,还可在onResume中恢复在onPause中释放的组件,例如恢复播放进度并继续播放.
onPause是在Activity处于半透明时(不可交互但是可见)调用,比如弹出一个Dialog样式的Activity,方法中可以停止不应该在暂停过程中执行的操作,如暂停播放视频.
场景分析:
打开Activity A经历的生命周期:
- A:onCreate --> onStart --> onResume
从A点击按钮打开B经历的生命周期:
- A: onPause --> onStop
- B: onCreate --> onStart --> onResume
从B再返回A经历的生命周期:
- B:onPause --> onStop --> onDestroy
- A:onRestart --> onStart --> onResume
点击Back返回时经历的生命周期:
- A:onPause -->onStop --> onDestroy
2. Activity的启动模式
Standard(标准模式)是Activity的默认启动模式,创建实例的时候,不管之前是否已经有此Activity的实例,都会创建一个新的Activity实例置于栈顶
SingleTop(栈顶复用模式)在启动Activity时,如果新建的Activity已经存在一个实例位于栈顶,将不用创建新的Activity实例,否则将要新建一个Activity实例
SingleTask(栈内复用模式)在启动Activity时,如果已经有一个此Activity的实例存在栈中,那么直接复用该实例,并将其以上的实例统统出栈,如果不存在于栈中,则创建一个实例置于栈顶。SingleTask启动模式保证栈中只存在某Activity的一个实例.
SingleInstance(单例模式)比较特殊,每个Activity实例都会存在一个独立的栈中,如果当前不存在该Activity的实例,直接创建一个实例置于独立的栈中,如果已经存在就直接复用原有的实例,其他程序调用同一个Activity都是同一个Activity实例.
Activity的生命周期与启动模式的学习就记录到这里,总体来说写得比较简单,希望各位大佬不要介意,如果哪里写的不对,烦请各位可以指出,谢谢!
以上所述就是小编给大家介绍的《Activity的生命周期与启动模式》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
jQuery
Earle Castledine、Craig Sharkie / SitePoint / 2010-02-28 / USD 39.95
jQuery: Novice to Ninja is a compilation of best-practice jQuery solutions to meet the most challenging JavaScript problems. In this question-and-answer book on jQuery, you'll find a cookbook of ready......一起来看看 《jQuery》 这本书的介绍吧!