Activity的生命周期

前言

刚开始学Android,对于Activity还是似懂非懂的那种感觉,学习了其生命周期仿佛又多了一层理解,在此分享一下!!

首先贴上Android官网上Activity的流程图

Activity的生命周期_第1张图片
从图来看,一个Activity从运行到结束回调七个方法:

onCreate():Activity开始运行执行的方法

onStart():用户看到界面时运行的方法

onResume():当此Activity能够获取用户焦点的时候调用

onPause():当启动另外一个Activity时

onStop():当此Activity被另外一个Activity完全遮盖时启动

onDestroy():当安卓系统自身算法根据硬件资源Kill Activity或者调用了finish()时调用

onRestart():当启动原先调用了onStop()方法的前一个Activity时调用

根据图片,每创建和运行一个 Activity 比如 FirstActivity 必须调用onCreate、onStart、onResume三个方法,当创建和运行 SecondActivity 时同样也会调用这三个方法,此时 FirstActivity 会调用 onPause() 方法保存数据,在启动了 SecondActivity 并完全遮挡后调用 onStop() 方法,如果不完全遮挡比如 对话框Dalog 就不会调用 onStop()

举个例子,当我们手机在上某个应用(视为FirstActivity)时我们接到了手机电话会跳出一个接听界面(视为SecondActivity),此时接听界面会完全盖上应用的界面,这是应用界面就会调用onPause()保存之前的数据,再启动接听界面,当我们滑动接听时接听界面调用了三个方法后,应用界面调用了onStop()方法结束,等到我们电话接完就会启动应用的onRestart()方法继续使用该应用

有些同学可能会疑问 onStart() 跟 onRestart() 有什么区别,前面讲到 Activity 的启动和构建会启动三个程序,包括了onStart()这里面需要加载很多资源,而 onRestart() 则是直接启用而不需要再加载,故我们关闭电话后可直接看到应用

还有的同学疑问 onDestroy()是如何调用的?看下面一些图片会明其意
Activity的生命周期_第2张图片

Activity的生命周期_第3张图片

Activity的生命周期_第4张图片

其实每一个 Activity 就是一个 Task (中文意思是任务) ,多个 Task 就是组成了一个stack (栈,特点是先进后出),也就是说我们每开启一个应用就是压栈一个 Activity,所以我们的手机每次都是显示最后开的那个应用,因为在栈顶,当系统资源(包括cpu,内存,电量等)不足时,安卓内部系统会根据需要杀死一些 Activity,可理解会直接关闭一些应用,闪退或者应用崩溃,这也就是调用了 onDestroy() 方法的缘故.

关于Activity生命周期的解析就大概这么些内容,有补充的同学可以在下面留言评论,感激不尽((\O_

你可能感兴趣的:(android)