Android 程式开发:(一)详解活动 —— 1.1 Activity的生命周期
2014-07-07 10:12
615 查看
最近看到一个高手,非常适合安卓入门者一直到深入,文章转:
http://blog.csdn.net/manoel/article/details/7577188
Activity这个类,定义了一些回调函数来控制它的生命周期。
onCreate() —— 当Activity第一次创建的时候被调用。
onStart() —— 当Activity对用户可见的时候被调用。
onResume() —— 当Activity开始和用户交互的时候被调用。
onPause() —— 正在运行的Activity马上要被暂停的时候被调用,此时,在这之前的Activity被重新获取。
onStop() —— 当Activity不在对用户可见的时候被调用。
默认地,被创建的Activity中都包含一个onCreate()方法,通过这个方法,可以创建显示给用户的UI组件。
从“被创建”到“被销毁”的生命周期图示:
想要理解Activity生命周期的最好办法就是创建一个工程,并实现所有的回调函数,然后让Activity与用户交互。
1. 创建一个工程:Activity101。
2. Activity101Activity.java中的代码。
[java] view
plaincopy
public class Activity101Activity extends Activity {
String tag = "Lifecycle";
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Log.d(tag, "In the onCreate() event");
}
public void onStart() {
super.onStart();
Log.d(tag, "In the onStart() event");
}
public void onRestart() {
super.onRestart();
Log.d(tag, "In the onRestart() event");
}
public void onResume() {
super.onResume();
Log.d(tag, "In the onResume() event");
}
public void onPause() {
super.onPause();
Log.d(tag, "In the onPause() event");
}
public void onStop() {
super.onStop();
Log.d(tag, "In the onStop() event");
}
public void onDestroy() {
super.onDestroy();
Log.d(tag, "In the onDestroy() event");
}
}
3. 按F11在模拟器上调试。
4. 当这个activity第一次被加载:
[plain] view
plaincopy
03-23 01:54:32.602: D/Lifecycle(644): In the onCreate() event
03-23 01:54:32.602: D/Lifecycle(644): In the onStart() event
03-23 01:54:32.602: D/Lifecycle(644): In the onResume() event
5. 按“返回键”,程序退出:
[plain] view
plaincopy
03-23 01:58:28.307: D/Lifecycle(644): In the onPause() event
03-23 01:58:28.762: D/Lifecycle(644): In the onStop() event
03-23 01:58:28.837: D/Lifecycle(644): In the onDestroy() event
6. 重新进入程序:
[plain] view
plaincopy
03-23 01:59:38.282: D/Lifecycle(644): In the onCreate() event
03-23 01:59:38.292: D/Lifecycle(644): In the onStart() event
03-23 01:59:38.302: D/Lifecycle(644): In the onResume() event
7. 按“拨号键”进入拨号界面,activity被转入后台运行:
[plain] view
plaincopy
03-23 02:00:23.252: D/Lifecycle(644): In the onPause() event
03-23 02:00:24.522: D/Lifecycle(644): In the onStop() event
8. 注意,此时onDestroy()方法并没有被触发,说明这个activity还在内存中。按“返回键”,退出拨号界面,这个Activity又重新可见了。观察LogCat窗口中的输出:
[plain] view
plaincopy
03-23 02:03:25.262: D/Lifecycle(644): In the onRestart() event
03-23 02:03:25.262: D/Lifecycle(644): In the onStart() event
03-23 02:03:25.262: D/Lifecycle(644): In the onResume() event
onRestart()方法被触发了,接下来是onStart()和onResume()。
可以从这个简单的例子中看到,当点击“返回键”的时候,activity被销毁了,与此同时,activity当前的状态也将消失。有一点需要特别注意,onPause()方法仅在两种情况下被调用:一个是在Activity被转入后台运行的时候,一个是用户按“返回键”将activity销毁的时候。
当一个anctivity被启动之后,onStart()和onResume()方法总是要被调用的,无论这个activity是从后台重新获取的,还是首次被创建的。当一个anctivity第一次被创建的时候,onCreate()方法总是被调用。
从上面的例子,我们可以得出结论:
使用onCreate()方法去创建和初始化将要使用的组件。
使用onResume()方法去开启服务和执行代码。当Activity处于“前台”模式下,这些服务和代码需要被开启或执行。
使用onPause()方法去停止服务和阻断代码。当Activity处于“后台”模式下,这些服务和代码不需要被开启或执行。
使用onDestroy()方法去释放资源。
http://blog.csdn.net/manoel/article/details/7577188
Activity这个类,定义了一些回调函数来控制它的生命周期。
onCreate() —— 当Activity第一次创建的时候被调用。
onStart() —— 当Activity对用户可见的时候被调用。
onResume() —— 当Activity开始和用户交互的时候被调用。
onPause() —— 正在运行的Activity马上要被暂停的时候被调用,此时,在这之前的Activity被重新获取。
onStop() —— 当Activity不在对用户可见的时候被调用。
默认地,被创建的Activity中都包含一个onCreate()方法,通过这个方法,可以创建显示给用户的UI组件。
从“被创建”到“被销毁”的生命周期图示:
想要理解Activity生命周期的最好办法就是创建一个工程,并实现所有的回调函数,然后让Activity与用户交互。
1. 创建一个工程:Activity101。
2. Activity101Activity.java中的代码。
[java] view
plaincopy
public class Activity101Activity extends Activity {
String tag = "Lifecycle";
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Log.d(tag, "In the onCreate() event");
}
public void onStart() {
super.onStart();
Log.d(tag, "In the onStart() event");
}
public void onRestart() {
super.onRestart();
Log.d(tag, "In the onRestart() event");
}
public void onResume() {
super.onResume();
Log.d(tag, "In the onResume() event");
}
public void onPause() {
super.onPause();
Log.d(tag, "In the onPause() event");
}
public void onStop() {
super.onStop();
Log.d(tag, "In the onStop() event");
}
public void onDestroy() {
super.onDestroy();
Log.d(tag, "In the onDestroy() event");
}
}
3. 按F11在模拟器上调试。
4. 当这个activity第一次被加载:
[plain] view
plaincopy
03-23 01:54:32.602: D/Lifecycle(644): In the onCreate() event
03-23 01:54:32.602: D/Lifecycle(644): In the onStart() event
03-23 01:54:32.602: D/Lifecycle(644): In the onResume() event
5. 按“返回键”,程序退出:
[plain] view
plaincopy
03-23 01:58:28.307: D/Lifecycle(644): In the onPause() event
03-23 01:58:28.762: D/Lifecycle(644): In the onStop() event
03-23 01:58:28.837: D/Lifecycle(644): In the onDestroy() event
6. 重新进入程序:
[plain] view
plaincopy
03-23 01:59:38.282: D/Lifecycle(644): In the onCreate() event
03-23 01:59:38.292: D/Lifecycle(644): In the onStart() event
03-23 01:59:38.302: D/Lifecycle(644): In the onResume() event
7. 按“拨号键”进入拨号界面,activity被转入后台运行:
[plain] view
plaincopy
03-23 02:00:23.252: D/Lifecycle(644): In the onPause() event
03-23 02:00:24.522: D/Lifecycle(644): In the onStop() event
8. 注意,此时onDestroy()方法并没有被触发,说明这个activity还在内存中。按“返回键”,退出拨号界面,这个Activity又重新可见了。观察LogCat窗口中的输出:
[plain] view
plaincopy
03-23 02:03:25.262: D/Lifecycle(644): In the onRestart() event
03-23 02:03:25.262: D/Lifecycle(644): In the onStart() event
03-23 02:03:25.262: D/Lifecycle(644): In the onResume() event
onRestart()方法被触发了,接下来是onStart()和onResume()。
可以从这个简单的例子中看到,当点击“返回键”的时候,activity被销毁了,与此同时,activity当前的状态也将消失。有一点需要特别注意,onPause()方法仅在两种情况下被调用:一个是在Activity被转入后台运行的时候,一个是用户按“返回键”将activity销毁的时候。
当一个anctivity被启动之后,onStart()和onResume()方法总是要被调用的,无论这个activity是从后台重新获取的,还是首次被创建的。当一个anctivity第一次被创建的时候,onCreate()方法总是被调用。
从上面的例子,我们可以得出结论:
使用onCreate()方法去创建和初始化将要使用的组件。
使用onResume()方法去开启服务和执行代码。当Activity处于“前台”模式下,这些服务和代码需要被开启或执行。
使用onPause()方法去停止服务和阻断代码。当Activity处于“后台”模式下,这些服务和代码不需要被开启或执行。
使用onDestroy()方法去释放资源。
相关文章推荐
- Android 程式开发:(一)详解Activity —— 1.1生命周期(前言)
- Android 程式开发:(一)详解活动 —— 1.2 设置Activity的样式和主题
- Android 程式开发:(一)详解活动 —— 1.3 隐藏Activity的标题
- Android 程式开发:(一)详解Activity —— 1.5浅析Context
- 【Android 开发】:Activity的生命周期 及 AndroidManifest.xml 文件详解
- Android开发笔记-Activity生命周期详解
- Android 程式开发:(一)详解Activity —— 1.3隐藏标题栏
- Android 程式开发:(一)详解Activity —— 1.7显示“稍微复杂”对话框
- Android开发之activity的生命周期详解
- Android 程式开发:(一)详解活动 —— 1.4 显示普通对话框
- Android开发,Activity生命周期详解
- android应用开发详解(十一)------------------Activity生命周期
- Android 程式开发:(一)详解Activity —— 1.2设置样式和主题
- Android开发中Activity的生命周期及加载模式详解
- Android开发之Activity生命周期详解
- Android开发之:Activity生命周期详解
- Android开发——Activity(活动)的生命周期(上)
- Android 程式开发:(一)详解Activity —— 1.4显示“普通”对话框
- Android 程式开发:(一)详解Activity —— 1.6显示“进度条”对话框
- Android 程式开发:(九)使用活动栏 —— 9.3自定义ActionBar项目和程序图标