监视状态变化
为了保证Activity能对状态改变响应,Android提供了一系列的事件处理器。当Activity在它的full、visible和active寿命中迁移时,会触发这些处理器。图3-8就Activity状态而言,概述了这些寿命。
图3-8
下面的框架代码显示了一个Activity中可利用的状态变化事件的方法处理器。在每一个方法中都有一些提示,描述了在每个状态变化事件里建议采取的动作。
package com.paad.myapplication;
import android.app.Activity;
import android.os.Bundle;
public class MyActivity extends Activity {
// 在full寿命的开始调用。
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
// 初始化Activity。
}
// 在onCreate结束后调用,用来恢复UI状态。
@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
// 从savedInstanceState恢复UI状态。
// bundle对象同样在onCreate方法中被传入。
}
// 在visible寿命之前被调用。
@Override
public void onRestart(){
super.onRestart();
// 加载变更。这个Activity已经可见过。
}
// 在visible寿命的开始调用。
@Override
public void onStart(){
super.onStart();
// 应用需要的UI变更。现在,Activity可见。
}
// 在active寿命的开始调用。
@Override
public void onResume(){
super.onResume();
// 恢复暂停的UI更新、线程或者当其inactive时被暂停的所需进程。
}
// 在active寿命结束调用来保存UI状态变化。
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
// 保存UI状态变化到savedInstanceState中。
// 当进程被杀死或重启时这个bundle会传入到onCreate方法。
super.onSaveInstanceState(savedInstanceState);
}
// 在active寿命结束调用。
@Override
public void onPause(){
// 中止UI更新、线程或CPU强烈的进程(当Activity不再是active前台Activity时不需要被更新)
super.onPause();
}
// 在visible寿命结束调用。
@Override
public void onStop(){
// 中止UI更新、线程或者Activity不可见时不需要的进程
// 保存数据和状态变化。
// 当这个被调用后,进程可能被杀死。
super.onStop();
}
// 在full寿命结束调用。
@Override
public void onDestroy(){
// 清除任何资源,包括结束线程,关闭数据库连接等。
super.onDestroy();
}
}
如上面的代码片段所示,当你override这些事件处理函数时,必须总是调用父类的函数。