最近这几篇我们主要讲的都是Activity,由初步到深入,我会一点一点的慢慢写出来,给大家分享,希望能给刚刚接触Android的爱好者们带来帮助。

    这一篇我就详细的讲一下Activity的生命周期。

    每一个Activity都是有一个完整的生命周期的,就像有生命的人一样经历从出生到成长再到衰老,最后死亡的过程。我们要了解Activity的生命周期是由七个方法构成的,这七个方法分别是:onCreate(),onStart(),onResume(),onPause(),onStop(),onRestart(),onDestroy(),我们先来看一下Activity生命周期的结构图再详细讲解一下每个方法的意义及使用。

    Activity生命周期示意图:

185234191.png

    从图中我们可以清楚的看到整个Activity生命周期的完整转变的过程,下面我们就通过理论和例子对每一个方法深入理解:


1.onCreate()方法:Activity第一次启动时调用的方法,仅仅被执行一次;

2.onStart()方法:onCreate()执行之后被用户可见时或onRestart()执行后重新被用户可见时调用;

3.onResume()方法:onStart()执行之后紧接着执行的方法,或者onPause()或者onRestart()执行之后调用,该方法用来处理与用户的交互,表示程序正在运行的状态;

4.onPause()方法:当Activity被置于后台且还没有被终止(killed)时调用,在系统内存不足时被调用;

5.onStop()方法:当Activity不再被用户可见时调用,也就是一个新的Activity这个Activity时调用,在系统需要内存时会终止该Activity;

6.onDestroy()方法:在Activity被终止之前调用,完成最后的清理工作;

7.onRestart()方法:当Activity被调用onStop()方法被终止后又重新被用户可见时调用。

 

    根据上面图中的过程以及七个方法简单介绍我们引入Activity的四个运行状态:

(1)运行态Running:

        Activity处于用户的最前端,被用户可见且获得焦点,此时可以与用户交互,调用完onResume()之后进入该状。一个Activity从被创建到进入到运行状态需要依次调用onCreate()-->onStart()-->onResume();

(2)暂停态Paused:

        Activity被置于后台但仍被用户可见,此时失去了焦点,所以不可以与用户交互,但是状态信息会被系统保留。调用完onPause()方法之后进入到此状态。若想重新回到运行态需要调用onResume()方法;

(3)停止态Stopped:

        当前的Activity被新的Activity覆盖,此时的原来的Activity不仅失去了焦点而且不被用户可见,但是状态信息仍被系统保存。调用onStop()方法之后进入到此状态。如果想重新回到运行状态,需要依次调用onRestart()-->onStart()-->onResume()方法;

(4)终止态Destroy:

        Activity被系统终止,资源被回收。调用onDestroy()之后进入此状态。若想重新回到此状态需要重新创建Activity。


    好了,接下来就看一下具体的代码吧:

    java文件MainActivity.java的代码如下,其他文件一样:

package com.example.activity_life;
import android.app.Activity;
import android.os.Bundle;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
System.out.println("onCreate");
}
@Override
protected void onStart() {
super.onStart();
System.out.println("onStart");
}
@Override
protected void onResume() {
super.onResume();
System.out.println("onResume");
}
@Override
protected void onPause() {
super.onPause();
System.out.println("onPause");
}
@Override
protected void onStop() {
super.onStop();
System.out.println("onStop");
}
@Override
protected void onRestart() {
super.onRestart();
System.out.println("onRestart");
}
@Override
protected void onDestroy() {
super.onDestroy();
System.out.println("onDestroy");
}
}

运行结果如下:

(1)首次运行程序(或者首次启动程序):

194238451.jpg

194340181.jpg

(2)此时点击模拟器上的首页键,可以观察到如下结果:

194709943.jpg

194723234.jpg

(3)接着上面的情况我们找到menu里的一个用程序图标再次点击,观察:

195025518.jpg

195040301.jpg

(4)继续接着上面往下走,这次我们在这个应用程序正在运行时打个电话以及挂掉电话之后返回到应用程序的两个标化过程,观察结果:

195552950.jpg

195651301.jpg

    挂掉电话之后:

195719223.jpg

(4)好,现在我们剩下最后一种情况了,直接按退出键(即返回键)的结果:

195932103.jpg


    以上的例子,就是对Activity生命周期的体现的最基本的例子,我们也可以通过我们生活中使用的真正的Android设备来体验每个不同的方法的调用,希望你能学得很好,谢谢观看。