android的activity的生命周期
2014-04-07 10:40
302 查看
1. Activity 的生命周期相关问题:
Activity 的生命周期介绍?各种操作下,相对应执行了哪些对应的方法?
经过一个星期对android的具体学习,有了一定了解,有必要对所理解的做一个总结,对今后进一步的掌握android也是种积淀和积累。
Android中, Component(Activity,service和broadcast recervices)的生命周期始于其响应一个Intent请求,终于该Component销毁。在这个期间,Component可能处于激活/未激活,可见/不可见的状态.
Android的生命周期和普通的程序并不相同,我们只能创建Activity,但并不能想销毁就销毁它,这并不由我们自己控制,而是由Android系统自己控制和管理,这点与J2ME有点类似。(J2ME的Midlet生命周期完全由应用程序管理器控制而不是由系统控制)
一个Activity的全部生命周期由以下方法定义:你可以重写这些方式,当Activity的状态发生改变时可以做一些需要的操作。所有的Activity都是实现OnCreate(Bundle) 来完成一些初始的操作
public class Activity extends ApplicationContext {
protected void onCreate(Bundle savedInstanceState);
protected void onStart();
protected void onRestart();
protected void onResume();
protected void onPause();
protected void onStop();
protected void onDestroy();
}
以下两幅图,比较清楚得介绍了,Activity的生命周期
接下来,通过以下一段测试的代码,通过打出的Log来看看我们在各种不同的操作下,Activity到底执行了哪些?以及执行顺序?
package com.myandroid.test;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
public class AndroidTest extends Activity
{
private static final String TAG = "MyNewLog";
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle
savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Log.e(TAG, "onCreate");
}
public void onStart(){
super.onStart();
Log.e(TAG, "onStart");
}
public void onRestart(){
super.onRestart();
Log.e(TAG, "onRestart");
}
public void onResume(){
super.onResume();
Log.e(TAG, "onResume");
}
public void onPause(){
super.onPause();
Log.e(TAG, "onPause");
}
public void onStop(){
super.onStop();
Log.e(TAG, "onStop");
}
public void onDestroy(){
super.onDestroy();
Log.e(TAG, "onDestroy");
}
}
1..启动该测试Activity时:
打印顺序:onCreate()->onStart()->onResume()
1. 按BACK键:
打印顺序:onPause()->onStop()->onDestroy()
2. 再重新调用该Activity时:
打印顺序: onCreate()->onStart()->onResume()
3. 按HOME键时:
打印顺序: onPause()->onStop() (并没有OnDestroy())
4. 再重新调用该Activity时:
打印顺序:onRestart()->onStart()->onResume()或者
打印顺序:onDestroy()->onCreate()->onStart()->onResume()
activity主要生命周期的方法说明:
onCreate(Bundle savedInstanceState):创建activity时调用。设置在该方法中,还以Bundle的形式提供对以前储存的任何状态的访问!
onStart():activity变为在屏幕上对用户可见时调用。
onResume():activity开始与用户交互时调用(无论是启动还是重新启动一个活动,该方法总是被调用的)。
onPause():activity被暂停或收回cpu和其他资源时调用,该方法用于保存活动状态的,也是保护现场,压栈吧!
onStop():activity被停止并转为不可见阶段及后续的生命周期事件时调用。
onRestart():重新启动activity时调用。该活动仍在栈中,而不是启动新的活动。
onDestroy():activity被完全从系统内存中移除时调用,该方法被调用可能是因为有人直接调用Finish()方法或者系统决定停止该活动以释放资源!
PS:在activity的生命周期中,只要离开了可见阶段,或者说失去了焦点,activity就很可能被进程终止了!
通过重写Activity的onSaveInstanceState事件处理函数,你可以使用它的Bundle参数来保存实例的值, 这个处理函数会在Activity的Active生命周期结束时触发,但仅在它不是显式地结束(即异常结束)。因此,它一般用于确保在单个用户会话中的Active生命周期间Activity状态的一致性
Activity 的生命周期介绍?各种操作下,相对应执行了哪些对应的方法?
经过一个星期对android的具体学习,有了一定了解,有必要对所理解的做一个总结,对今后进一步的掌握android也是种积淀和积累。
Android中, Component(Activity,service和broadcast recervices)的生命周期始于其响应一个Intent请求,终于该Component销毁。在这个期间,Component可能处于激活/未激活,可见/不可见的状态.
Android的生命周期和普通的程序并不相同,我们只能创建Activity,但并不能想销毁就销毁它,这并不由我们自己控制,而是由Android系统自己控制和管理,这点与J2ME有点类似。(J2ME的Midlet生命周期完全由应用程序管理器控制而不是由系统控制)
一个Activity的全部生命周期由以下方法定义:你可以重写这些方式,当Activity的状态发生改变时可以做一些需要的操作。所有的Activity都是实现OnCreate(Bundle) 来完成一些初始的操作
public class Activity extends ApplicationContext {
protected void onCreate(Bundle savedInstanceState);
protected void onStart();
protected void onRestart();
protected void onResume();
protected void onPause();
protected void onStop();
protected void onDestroy();
}
以下两幅图,比较清楚得介绍了,Activity的生命周期
接下来,通过以下一段测试的代码,通过打出的Log来看看我们在各种不同的操作下,Activity到底执行了哪些?以及执行顺序?
package com.myandroid.test;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
public class AndroidTest extends Activity
{
private static final String TAG = "MyNewLog";
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle
savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Log.e(TAG, "onCreate");
}
public void onStart(){
super.onStart();
Log.e(TAG, "onStart");
}
public void onRestart(){
super.onRestart();
Log.e(TAG, "onRestart");
}
public void onResume(){
super.onResume();
Log.e(TAG, "onResume");
}
public void onPause(){
super.onPause();
Log.e(TAG, "onPause");
}
public void onStop(){
super.onStop();
Log.e(TAG, "onStop");
}
public void onDestroy(){
super.onDestroy();
Log.e(TAG, "onDestroy");
}
}
1..启动该测试Activity时:
打印顺序:onCreate()->onStart()->onResume()
1. 按BACK键:
打印顺序:onPause()->onStop()->onDestroy()
2. 再重新调用该Activity时:
打印顺序: onCreate()->onStart()->onResume()
3. 按HOME键时:
打印顺序: onPause()->onStop() (并没有OnDestroy())
4. 再重新调用该Activity时:
打印顺序:onRestart()->onStart()->onResume()或者
打印顺序:onDestroy()->onCreate()->onStart()->onResume()
activity主要生命周期的方法说明:
onCreate(Bundle savedInstanceState):创建activity时调用。设置在该方法中,还以Bundle的形式提供对以前储存的任何状态的访问!
onStart():activity变为在屏幕上对用户可见时调用。
onResume():activity开始与用户交互时调用(无论是启动还是重新启动一个活动,该方法总是被调用的)。
onPause():activity被暂停或收回cpu和其他资源时调用,该方法用于保存活动状态的,也是保护现场,压栈吧!
onStop():activity被停止并转为不可见阶段及后续的生命周期事件时调用。
onRestart():重新启动activity时调用。该活动仍在栈中,而不是启动新的活动。
onDestroy():activity被完全从系统内存中移除时调用,该方法被调用可能是因为有人直接调用Finish()方法或者系统决定停止该活动以释放资源!
PS:在activity的生命周期中,只要离开了可见阶段,或者说失去了焦点,activity就很可能被进程终止了!
通过重写Activity的onSaveInstanceState事件处理函数,你可以使用它的Bundle参数来保存实例的值, 这个处理函数会在Activity的Active生命周期结束时触发,但仅在它不是显式地结束(即异常结束)。因此,它一般用于确保在单个用户会话中的Active生命周期间Activity状态的一致性
相关文章推荐
- [android] Activity 的生命周期 以及 横屏竖屏切换时 Activity 的状态变化
- android_activity的生命周期和启动模式
- Android应用开发(二):Activity生命周期剖析以及如何启动新的Activity或网页
- Activity 生命周期观察-Android Activity Lifecycle Observation
- [Activity生命周期] Android 完美退出应用程序
- Android:Activity学习(1) 生命周期
- Android Activity 生命周期的透彻理解
- Android:相机调用与Activity生命周期
- Android基础学习之Activity生命周期
- android中activity的生命周期
- Android基础知识:Activity生命周期和Intent用法
- 每日Android一问等你来解答-什么是Activity的生命周期?
- android 学习activity生命周期和启动模式
- Android -- 生命周期(activity跳转过程中的生命周期)
- [置顶] Android之Activity生命周期总结(一)
- android轻量框架二__Activity生命周期
- Android TabActivity的生命周期
- Android 开发学习笔记(四)—— Activity的生命周期
- Android系列教程之五:Activity的生命周期
- Android 进阶之Activity生命周期与启动模式