Android--Activity的生命周期(一)

1、Activity的创建过程

1、1 创建一个Activity

  • 创建一个Class继承自Activity
  • 重写onCreate()方法,设置布局
  • 在AndroiManifest.xml文件中注册该Activity

1、2 Activity7个重要方法

  • onCreate – 首次创建时调用
  • onStart – 启动时
  • onResume – 获得焦点时
  • onPause – 转入其它Activity或者休眠等
  • onStop – 当前activity不可见时
  • onRestart – 重新启动时
  • onDestory – 销毁时

2、单个Activity生命周期

为了证实结论正确,我们新建一个Activity命名为Fisrt,并重写上述7个方法。并在每个方法中打印出当前调用的方法。代码如下:

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        System.out.println("First onCreate");
    }
    @Override
    protected void onStart() {
        System.out.println("First onStart");
        super.onStart();
    }

    @Override
    protected void onResume() {
        System.out.println("First onResume");
        super.onResume();
    }

    @Override
    protected void onPause() {
        System.out.println("First onPause");
        super.onPause();
    }

    @Override
    protected void onStop() {
        System.out.println("First onStop");
        super.onStop();
    }

    @Override
    protected void onRestart() {
        System.out.println("Fisrt onRestart!");
        super.onRestart();
    }

    @Override
    protected void onDestroy() {
        System.out.println("First onDestory!");
        super.onDestroy();
    }

现在我们首次启动Activity发现输出为:

First onCreate
First onStart
First onResume

当我们点击Home,回到主界面时,输出为:

First onPause
First onStop

在点击程序,回到程序,输出为

First onRestart
First onStart
First onResume

在点击back,输出为

First onPause
First onStop
Fisrt onDestory

上述输出可以明显看出启动过程,就不多叙述了。

3、多个Activity生命周期

这里创建两个Activity,分别为First和Second,2个以上的,其实都是一样的。
我们在第一个activity中添加了个button,当点击button时,使用Intent跳转到Second,
跳转代码:

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        System.out.println("First onCreate");
        Button btn = (Button)findViewById(R.id.btn);
        btn.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {

                Intent intent = new Intent();
                intent.setClass(MainActivity.this,SecondActivity.class);
                startActivity(intent);
            }
        });
    }

怎么添加Button控件,就不阐述了。
下面我们启动应用程序,即进入到了first activity中。根据2所说,输出顺序应该为:

first onCreate
first onStart
first onResume

然后我们点击Button跳转到second activity中,输出为:

first onPause
second onCreate
second onStart
second onResume
first onStop

这时候活动的为second activity,所以此时进行home操作,和上面的一样。
如果我们这时点击了back退回到,则输出为

second onPause
first onRestart
first onStart
first onResume
second onStop
second onDestory

这时second activity已经destroy掉了,如果再进入就不是和上面的一样了,而是重新创建一个新的Activity了,再次跳转到second activity,则输出为:

first onPause
second onCreate
second onStart
second onResume
first onStop

4、总结

上面的程序输出已经把调用顺序,解释的很清楚了。建议大家,自己重载那7个函数,然后自己启动,实验一下增加下理解。

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。