为了更好的理解activity生命周期,大家可以下载示例程序,下载
android 四大组件包括Activity、Service、Broadcast Receiver、Content Provider。 其中Activity是与用户直接交互的组件,通过它可以实现文字输入,单击,双击事件,文字回显,界面控制,可以说它实际上是android的一张脸,公关部,餐馆服务员,是最前线的工作者。
android应用程序的生命周期也主要通过activity的生命周期得以体现,理解activity生命周期也是android开发所必不可少的。
下图为activity的生命周期,可以看出其主要包括oncreate, onstart, onResume, onPause, onStop, onDestory, onRestart, Activity running, APP process几个状态。
onCreate: 当activity 第一次被创建时回调该函数,在这个函数内你应该完成所有资源加载以及程序的正常初始化工作,包括创建视图,初始化相关数据。
onStart: 当activity视图对用户可见后会调用这个函数。
onResume:通过调用该函数,这个activity可以和用户进行交互,当可以和用户进行交互时,这个activity将会放到activity stack的栈顶。
onPause:当另外一个activity变为activity stack最顶端时,这个函数将会被调用,在这个函数中我们可以添加代码保存我们的数据,关闭当前activity动画以节省CPU资源,需要特别说明,这个过程的不应该过于复杂,否则将会加大另一个activity界面对用户可见的时间,大大降低用户体验。通俗来讲当另外一个activity要变为最界面顶层和用户直接交互是,这个函数被调用,如果当前activity会被新的activity完全遮挡,对用户完全不可见时,会继续调用onstop函数,大家可以点击示例中的changeUIByActivity按钮,通过查看log加以验证,因为新的activity被设置成了透明背景,所以对用户仍然可见,所以不会继续调用stop函数
onStop:前面已经支持,如果当前activity将会被新的activity完全遮挡,系统将会调用stop, 当该activity重新对用户可见时,将会调用Restart, 当该activity退出后,回调用onDestory函数
onDestory:当该activity被销毁时这个函数会被调用,销毁原因包括用户调用finish()函数或者系统由于资源紧张而主动释放该activity以节省空间,可以通过isFinishing方法判断这两种情景
onRestart:当该activity不不可见,重新变为可见时,该函数将会被调用
Activity Running: 这是 APP当前被激活的actitiy和用户进行交互的一个状态,onClick等监听函数在这个系统状态下将会生效。
APP process killed: 当系统内存空间不足时,有更高优先级的app需要空间时,系统将会进入这个状态,在这个状态下该 activity所占用的资源将会被回收,直到用户重新激活该activity,将会重新执行onCreate创建资源。