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中收到的最后一个消息,所以你应该在此消息中保存你的用户数据,以便在下次会话开始时恢复用户场景。

posted @ 2010-11-01 18:24  漂泊的云  阅读(547)  评论(0编辑  收藏  举报