学习安卓也有小半年的时间,现在回头来看发现有的知识只是知道大概,没有系统性的在大脑里面留存,所以打算回过头来一是能记载这些时间的学习成果,二是以后遇到旧问题就可以直接翻出来看了。
Activity是android开发的开始,Activity组成了android基本框架之一的Application,主要用于与用户的交互。而一个Activity的整个生命周期里面包含了程序的逻辑,有序的开始活动,停止活动并且最后释放内存。下面就说说生命周期的组成和各组成的功能。
onCreate()在创建时进行初始化,里面可以加载布局文件,也可以对Window进行修改优化(Window包括应用程序窗口Application Window、对话框窗口Sub Window、系统窗口System Window),是主活动的开始,也是第一个系统调用的函数。
onStart()是在屏幕由不可见到可见的时候调用,一般程序里面不会可以写出来默认可见。
onResume()是要与用户进行交互的时候调用,此时活动处于运行状态,即活动位于返回栈的栈顶,而且用户可见。
onPause()是打开另一活动的时候调用,此时释放上一活动占用CPU的资源,而且保存一些关键的数据,当前活动不再处于栈顶但依然可见。
onStop()是在活动完全不可见的时候调用,它与onPause()的区别在于,如果打开的另一个活动是Dialog的话,当前的活动依然可见,onPause()会被调用而onStop()不会被调用。
onDestroy()是在活动要被销毁的时候调用,此时用户返回app,为了保证手机的内存不被占用而调用。
onRestart()在活动被重新启用的时候调用,就比如在打开另一个活动后又返回主活动的时候调用,此时活动由停止状态变为运行状态。
这里还涉及了三种周期:
完整生命期:从onCreate()到onDestroy()之间,即初始化到最后释放内存。
可见生命期:从onStart()到onStop()之间,此时屏幕由可见到不可见,从start开始加载,到stop停止加载,从而可以打开其他活动,这样也保证了在停止状态下不会积累太多的内存。
前台生命期:从onResue()到onPause()之间,即整个运行状态到打开另一个活动,此时活动可以与用户进行交互。
一个主活动包含完整生命周期时的调用情况是:onCreate()--> onStart()-->onResume()
从主活动打开另一个Normal Activity时生命周期的调用情况是:onPause()-->onStop()
返回主活动:onRestart()-->onStart()-->onResume()
从主活动打开另一个Dialog时的生命周期调用情况是:onPause()
返回主活动:onResume()
MainActivity退出时调用:onPause()-->onStop()-->onDestroy()