蹒跚走路的程序猿

Andoid activity 生命周期

  今天介绍一下Android中最常用的组件activity的生命周期。当activity处于Android应用中运行时,它的活动状态由Android以Activity栈的形式管理。当前活动的Activity处于栈顶。随着不同应用的运行,每个Activity都有可能从活动状态转入非活动状态,也可能从非活动状态转入活动状态。

  归纳起来Activity大致会经过如下四个状态。

  活动状态:当前Activity位于栈顶,用户可见,可以获得焦点。

  暂停状态:其他Activity处于栈顶,该Activity依然可见,只是不能获得焦点。

  停止状态:该Activity不可见,失去焦点。

  销毁状态:该Activity结束,或Activity所在的Dalvik进程被结束。

  下图显示了Activity生命周期及相关回调方法。

 

  从图中可以看出,在Activity的生命周期中,如下方法会被系统回调。

  onCreate:创建Activity时被回调。

  onStart:启动Activity时被回调。

  onRestart:重新启动Activity时被回调。

  onResume:恢复Activity时被回调。

  onPause:暂停Activity时被回调。

  onStop:停止Activity时被回调。

  onDestroy:销毁Activity时被回调。

  下面演示一下,演示代码:

public class Lifecycle extends Activity
{
    final String TAG = "--CrazyIt--";
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        //输出日志
        Log.d(TAG , "-------onCreate------");        
        Button bn = (Button)findViewById(R.id.bn);
        //为bn按钮绑定事件监听器
        bn.setOnClickListener(new OnClickListener()
        {
            @Override
            public void onClick(View source)
            {
                //结束该Activity
                Lifecycle.this.finish();
            }            
        });
    }
    @Override
    public void onStart() 
    {
        super.onStart();
        //输出日志
        Log.d(TAG , "-------onStart------");
    }
    @Override
    public void onRestart() 
    {
        super.onRestart();
        //输出日志
        Log.d(TAG , "-------onRestart------");        
    }
    @Override
    public void onResume() 
    {
        super.onResume();
        //输出日志
        Log.d(TAG , "-------onResume------");        
    }
    @Override
    public void onPause() 
    {
        super.onPause();
        //输出日志
        Log.d(TAG , "-------onPause------");        
    }
    @Override
    public void onStop() 
    {
        super.onStop();
        //输出日志
        Log.d(TAG , "-------onStop------");        
    }
    @Override
    public void onDestroy()
    {
        super.onDestroy();
        //输出日志
        Log.d(TAG , "-------onDestroy------");        
    }
}

将Activity设置为程序的入口Activity,当程序启动并执行该Activity,在LogCat窗口输出:

 

 当按下主页键,返回到桌面,当前该Activity将失去焦点且不可见,但该Activity并未被销毁,只是进入停止状态。此时的LogCat输入:

 

再次找到该应用并启动它,将可以看到下面的输出:

 

如果用户单击返回键,该Activity将会结束自己,LogCat输出:

 

这就是我对Activity生命周期的一些认识,希望能够帮助到大家。

注:本人参考了疯狂Android讲义。

 

posted on 2013-08-03 22:42  蹒跚走路的程序猿  阅读(301)  评论(0)    收藏  举报

导航