Activity 是一个应用组件,用户可与其提供的屏幕进行交互,以执行拨打电话、拍摄照片、发送电子邮件或查看地图等操作。通过实现回调方法可以管理 Activity 的生命周期。
1、onCreate方法:当 Activity 创建视图时调用
2、onRestart方法:当 Activity 界面从新打开(第一次创建后不会调用,再次打开 Activity 界面时会调用)
3、onStart方法:当activity界面变成可见时调用
4、onResume方法:当activity界面获取焦点时调用
5、onPause方法:当activity界面失去焦点时调用
6、onStop方法:当activity界面不可见时调用
7、onDestory方法:当activity销毁时调用
示例代码:
新建一个 Android 工程, 在 MainActivity 中重写以下方法
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
System.out.println("--------- onCreate 创建视图 ---------");
}
@Override
protected void onRestart() {// 当activity界面从新打开,第一次打开不会调用
super.onRestart();
System.out.println("--------- onRestart 界面从新打开---------");
}
@Override
protected void onStart() {// 当activity界面变成可见时调用
super.onStart();
System.out.println("--------- onStart activity可见---------");
}
@Override
protected void onResume() {// 当activity界面获取焦点时调用
super.onResume();
System.out.println("--------- onResume 获取焦点 ---------");
}
@Override
protected void onPause() {// 当activity界面失去焦点时调用
super.onPause();
System.out.println("--------- onPause 失去焦点 ---------");
}
@Override
protected void onStop() {// 当activity界面不可见时调用
super.onStop();
System.out.println("--------- onStop 界面不可见 ---------");
}
@Override
protected void onDestroy() {// 当activity销毁时调用
super.onDestroy();
System.out.println("--------- onDestroy activity销毁 ---------");
}
程序启动时的日志信息:
I/System.out: --------- onCreate 创建视图 ---------
I/System.out: --------- onStart activity可见---------
I/System.out: --------- onResume 获取焦点 ---------
点击 Home 键的日志信息:
I/System.out: --------- onPause 失去焦点 ---------
I/System.out: --------- onStop 界面不可见 ---------
再次打开程序的日志信息:
I/System.out: --------- onRestart 界面从新打开---------
I/System.out: --------- onStart activity可见---------
I/System.out: --------- onResume 获取焦点 ---------
点击返回键,销毁 Activity 时的日志信息:
I/System.out: --------- onPause 失去焦点 ---------
I/System.out: --------- onStop 界面不可见 ---------
I/System.out: --------- onDestroy activity销毁 ---------
横竖屏切换时 Activity 的生命周期(会先销毁,然后再创建)
程序启动时的日志信息(默认竖屏):
I/System.out: --------- onCreate 创建视图 ---------
I/System.out: --------- onStart activity可见---------
I/System.out: --------- onResume 获取焦点 ---------
程序切换到横屏的日志信息:
I/System.out: --------- onPause 失去焦点 ---------
I/System.out: --------- onStop 界面不可见 ---------
I/System.out: --------- onDestroy activity销毁 ---------
I/System.out: --------- onCreate 创建视图 ---------
I/System.out: --------- onStart activity可见---------
I/System.out: --------- onResume 获取焦点 ---------
再切换成竖屏的日志信息:
I/System.out: --------- onPause 失去焦点 ---------
I/System.out: --------- onStop 界面不可见 ---------
I/System.out: --------- onDestroy activity销毁 ---------
I/System.out: --------- onCreate 创建视图 ---------
I/System.out: --------- onStart activity可见---------
I/System.out: --------- onResume 获取焦点 ---------