欢迎来到天天文库
浏览记录
ID:17963511
大小:202.00 KB
页数:8页
时间:2018-09-11
《android笔记:组件生命周期》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、Android应用程序组件中有一个生命周期,贯穿于创建到结束的整个周期。周期里面含有各种状态,这些状态对组件的生命周期起着至关重要的影响。一、Activity生命周期 1.Activity有三个状态 (1)活动(active)或称运行(running):屏幕前台的Activity(当前任务中栈顶的Activity),用来处理当前用户的请求。 (2)暂停(paused):指当前运行的Activity在屏幕上失去焦点但却对用户是可见的,也就是说用户能看得到它的界面,不过他是被当前Activ
2、ity挡住了。暂停状态下的Activity仍是存活的(维持着所有状态和成员信息,屏幕上还会有它的窗体)。当前系统资源处于极度缺乏的情况下,这个状态下的Activity就会被干掉。 (3)停止(stopped):屏幕不再有它的窗体,但是它仍然保留着所有状态和成员信息。通常当系统其它地方需要更多的内存时,这个Activity就会被干掉。 2.如果一个Activity处于暂停或停止状态时,系统要么从内存中清除它要么调用它的finish()销毁它或是简单地干掉它的进程。当用户再次调用了这个Activity
3、,它就会重新开始并保存住先前的状态。 3.Activity的生命周期的转变本质上是其内部状态间的转变,Android提供了如下几个protect方法:Java代码 1.void onCreate(Bundle savedInstanceState) 2.void onStart() 3.void onRestart() 4.void onResume() 5.void onPause() 6.void onStop() 7.void onDestroy() voidonCreate(
4、BundlesavedInstanceState)voidonStart()voidonRestart()voidonResume()voidonPause()voidonStop()voidonDestroy() 4.以上方法均属钩子方法,我们需要重写它们,以使状态改变时做出恰当的行为。所有的Activity必须要重写onCreate(),因为这个方法用来做初始化和组装Activity的工作。大多数情况下,最好也要重写onPause()方法,主要是针对用户发出停止请求的情况下,我们需要在这个方
5、法里面做一些处理(这一点很重要,下面会有所解释)。实现这些方法时需要注意一点,方法内部第一句话一定要先调用父类版本的方法,例如:Java代码 1.protected void onPause() { 2. super.onPause(); 3.} protectedvoidonPause(){super.onPause();} 5.上面七个方法定义了Activity的整个生命周期,另外它们还有三个内嵌循环,如下: (1)Activity整体寿命(entirelifetime):这个循
6、环发生在第一次调用onCreate()到最终调用onDestroy()期间。初始化工作在onCreate()中完成,释放所有剩余资源的工作在onDestroy()中完成。注意,这个循环过程是在同一线程中进行的。 (2)Activity可见寿命(visiblelifetime):这个循环发生在调用onStart()时直到调用onStop()期间。在这段时间里,尽管这个Activity不会和用户进行交互,但用户能够在屏幕上看到它;也就是说这两个方法维护着Activity所需要的一些资源(针对于用户)。这两个方法可
7、以多次调用,比如对Activity进行来回显示或隐藏的操作。 (3)Activity前台寿命(foregroundlifetime):这个循环发生在调用onResume()时直到调用onPause()方法期间。在这段时间里,Activity在屏幕上是处于其他Activity的前面并与用户进行着交互。Activity会频繁地在暂停和重新状态之间相互转变。因此这两个方法中的代码需要做些轻量级的操作。6.Activity生命周期图: 上图详细阐述了Activity生命周期循环的路径,它们都是通过状态间的
8、转换而形成的。带颜色椭圆是状态转换过程中涉及到最主要的活动,长方形就是那些回调方法。 从上图就可以看出那七个方法它们在Activity生命周期中处于什么样的位置、每个方法又会有什么方法紧随其上下、当外部条件发生时,会使它们的状态发生怎样的变化,而这个变化带来的状态变化又会调用了哪些方法,通过此图一目了然。
此文档下载收益归作者所有