Activity生命周期的总结
Activity是Android程序开发的四大组件之一,也是我们用得最多的组件。
Activity,提供一个屏幕,用户可以用来交互为了完成某项任务。
每一个Android开发者都必须要非常熟悉Activity的相关知识。本文对Activity的生命周期做总结。
一.Activity的七个生命周期
Android的Activity有七个生命周期,这是我们要记住的。它们分别是:
(一)onCreate();页面开始创建状态
(二)onStart();页面创建成功,可见,不可操控状态
(三)onRestart();可见,不可操控状态
(四)onResume();页面可见可操控状态
(五)onPause();页面可见不可操控状态
(六)onStop();页面不可见不可操控状态
(七)onDestroy();页面退出状态
一个Activity是生命周期就是从onCreate()直到onDestroy()的过程。
这七个Activity的七个生命周期的状态是我们要熟记,并且要理解的。
其中解释一下onPause()和onStop(),onPause()方法在页面跳出对话框是会回调,
因为对话框没有完全遮住底部的页面,原来的页面还是可见的;
而onStop()是程序页面完全看不到的情况下回调的,
比如跳转到另一个页面或直接按手机的Home键都会回调该方法。
上面的状态出来onRestart()之外其他的都是两两有对应关系的,
比如onCreate()和onDestroy(),一个是最开始创建,一个是最后销毁;
onStart()和onStop(),一个是页面创建后的状态,一个是页面销毁前的状态;
onResume()和onPause(),一个是页面运行状态,一个是页面的暂停状态。
二.Activity生命周期的流程图:
上面这个生命周期的流程图的所有路线也是我们要理解和熟记的。
左边箭头的意思,这里表示程序的页面在暂停状态和停止状态都可能被系统的干掉。
右边箭头的意思,这里表示程序的页面在暂停状态和停止状态转换为可见状态的一个过程。
三.示范Activity生命周期的运行过程
(一)程序代码
package com.example.application;
import android.app.Activity;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
System.out.println("MainActivity.onCreate()");
}
@Override
protected void onStart() {
System.out.println("MainActivity.onStart()");
}
@Override
protected void onRestart() {
System.out.println("MainActivity.onRestart()");
}
@Override
protected void onResume() {
System.out.println("MainActivity.onResume()");
}
@Override
protected void onPause() {
System.out.println("MainActivity.onPause()");
}
@Override
protected void onStop() {
System.out.println("MainActivity.onStop()");
}
@Override
protected void onDestroy() {
System.out.println("MainActivity.onDestroy()");
}
}
上面程序什么都没做,只是在程序调用某个方法时,执行一句输出语句,告诉我们这个程序运行了上面方法而已。
程序在某个状态自动运行的这些方法就叫回调方法。
(二)程序运行后执行的回调方法
在程序运行后我们可以在输出台上看到下面的语句:
这就是程序页面创建的三个基本的回调方法。按固定顺序执行。
(三)程序页面不可见后的回调方法
接着直接按手机的Home键,程序的页面变为不可见,输出台可以看到下面的语句:
可以看到程序页面从正常运行状态到不可见状态会运行onPause()和onStop()这两个回调方法,
如果只是从页面弹出一个对话框程序只会运行onPause()方法,这里不演示了。
(四)从不可见状态到可见状态的回调方法
在手机的桌面程序中点击刚才没退出的程序,可以看到输出台上的语句如下:
可以看到程序再次运行了onRestart()、onStart()和onResume这三个方法。
才能使程序变为正常运行状态。
(五)程序退出执行的回调方法
在程序正常运行的状态下退出,可以在输出台看见下面的代码:
程序退出肯定会执行onPause()、onStop()、onDestroy()这三个方法。
总结上面是程序运行过程中可能会运行的回调方法,
而且它们的每个状态之间转换时回调方法的过程是一定的并且是按照顺序的。
这就要求我们非常熟悉Activity的流程图了,
所有的状态转换都是按照流程图的某个流程进行的。
三.Activity在面试中
Activity在Android中有那么重要的地位,那么面试中肯定都会被问到的,只是问到深浅而已。
(一)这里举例一个比较常见的面试问题:
说说你对Android中Activity的理解。
(二)问题分析:
这个问题问得比较广泛,也是最常问的,因为这可以很全面的考察面试者对Activity理解深浅,
也考察面试者里总结能力和他的表达能力,以及知识点的全面性等等。
(三)回答方向:
1.Android Activity基本概念的解释,两三句话形象的描述。要说明它是四大组件中最常用的组件。
2.Activity属性设定,对话框或普通页面。
3.Activity生命周期,一个是说出关于所有的回调方法,另一个解释一下页面跳转会执行的回调方法。
4.Activity通过Intent数据传递的方法和过程。
5.Activity和其他组件之间的关系。
如果能把上面这4点很清楚的表达出来,说明你的开发理论和思路是相当厉害的了。
但是很多面试中也不一定会笼统的问,有的面试官会会问得比较详细一点的知识点,
比如上面回答方向的某一个点,其中Activity的说明周期或Activity的数据传递这两个也是最为常见的面试题。
熟练掌握Activity对我们学习其他组件也是非常有帮助的。
所以Activity是值得我们花很多时间去学习的。