Android程序生命周期
Android中的程序以Activity的方式存在(今天刚入门,对这个Activity还没有深刻认识,先这么写着)。
在Android中,Application和Activity是两个不等同的东西,Application只是用来执行Activity的一个容器而已,Activity有自己的生命周期:
(摘自《Hello,Android》)
要查看Activity的各个状态的触发过程可以使用如下代码:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Log.i(Main.ACTIVITY_SERVICE, "dylan:onCreate");
}
@Override
public void onStart(){
super.onStart();
Log.i(Main.ACTIVITY_SERVICE, "dylan:onStart");
}
@Override
public void onResume(){
super.onResume();
Log.i(Main.ACTIVITY_SERVICE, "dylan:onResume");
}
@Override
public void onPause(){
super.onPause();
Log.i(Main.ACTIVITY_SERVICE, "dylan:onPause");
}
@Override
public void onStop(){
super.onStop();
Log.i(Main.ACTIVITY_SERVICE, "dylan:onStop");
}
@Override
public void onRestart(){
super.onRestart();
Log.i(Main.ACTIVITY_SERVICE, "dylan:onRestart");
}
@Override
public void onDestroy(){
super.onDestroy();
Log.i(Main.ACTIVITY_SERVICE, "dylan:onDestroy");
}
@Override
public void onSaveInstanceState(Bundle savedInstanceState){
super.onSaveInstanceState(savedInstanceState);
Log.i(Main.ACTIVITY_SERVICE, "dylan:onSaveInstanceState");
}
@Override
public void onRestoreInstanceState(Bundle savedInstanceState){
super.onRestoreInstanceState(savedInstanceState);
Log.i(Main.ACTIVITY_SERVICE, "dylan:onRestoreInstanceState");
}
执行例子:
启动程序时:
11-01 10:14:11.798: INFO/activity(632): dylan:onCreate
11-01 10:14:11.798: INFO/activity(632): dylan:onStart
11-01 10:14:11.838: INFO/activity(632): dylan:onResume
点击手机上Home按键:
11-01 10:14:46.888: INFO/activity(632): dylan:onSaveInstanceState
11-01 10:14:46.888: INFO/activity(632): dylan:onPause
11-01 10:14:47.968: INFO/activity(632): dylan:onStop
再次从程序中运行该Activity:
11-01 10:15:14.269: INFO/activity(632): dylan:onRestart
11-01 10:15:14.269: INFO/activity(632): dylan:onStart
11-01 10:15:14.299: INFO/activity(632): dylan:onResume
点击返回按钮:
11-01 10:16:02.278: INFO/activity(632): dylan:onPause
11-01 10:16:02.968: INFO/activity(632): dylan:onStop
11-01 10:16:02.968: INFO/activity(632): dylan:onDestroy
翻译自《Hello,Android》:
当Actigity不在前台运行时,它可能是被Stopped,但也有可能被系统随时Destroy掉。这是一种很普遍的情况,在编写Android程序的时候,必须要提前认识到这种可能性,一般而言,onPuase方法往往可能是你在当前Activity中收到的最后一个消息,所以你应该在此消息中保存你的用户数据,以便在下次会话开始时恢复用户场景。