From:
http://www.iteye.com/topic/1092061
看一个图先:

这是官网的Activity生命周期结构图,从这个图中可以看出Activity的生命周期函数挺多的,其实他的生命周期和以往我们看到的其他组件的生命周期一样,都是从创建到销毁的过程,只不过之间多加了几个生命周期函数,将他的生命周期细化了。
首先看到的事onCreate()函数,顾名思义这个函数在Activity开始创建时调用,可以在其中定义一些初始化操作。接下来是onStart()方法,这个方法在Activity开始被执行时调用,它紧随onCreate()方法之后调用,接着是onResume()方法,这个方法对我们来说算是比较陌生的,这个方法是在该Activity或得用户输入焦点时被调用,这个或得用户输入焦点有点不好理解,如果我们用过Android手机或者其他系统的手机时,经常会看到有些窗口虽然能看到但无法对他进行操作,这时的Activity就没有或得用户焦点。当这个方法调用后Activity开始真正的运行了,在Activity正在运行时用户激活了另一个Activity,这时将调用第一个Activity的onPause()方法,可以理解为第一个Activity被暂停了,这个时候如果系统的内存不够用(手机内存不够用的情况经常发生),第一个Activity的进程可能被杀死(何时被杀死是由系统决定的,不需要我们参入),当下次我们再运行第一个Activity时就需要重新创建这个Activity,那就又需要调用onCreate()方法。如果在这个Activity没有被杀死的情况下,我们重新调用第一个Activity,就会直接调用它的onResume()方法后开始运行。如果第一个Activity很久都没有得到再次运行机会,就会调用onStop()被停止,这时如果Activity又或得用户输入焦点,就会调用onRestart()方法,重新开始执行这个Activity,或者被系统杀死,否则调用onDestroy()方法销毁Activity。这整个过程看起来有点绕,其实在实际开发中我们很少会用到所有的生命周期函数,但我们要弄清它的原理,在使用时知道所以然就行了。
下面来看一个实例(实例只列出一些重要的文件内容,具体的创建步骤可以参考之前的文章,实例源码参考mars老师的android视频教程):
第一个Activity的布局文件(main.xml):
\
Xml代码
[](javascript:void() "收藏这段代码")
1.
\<?xml version="1.0" encoding="utf-8"?\>
2.
\<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3.
android:orientation="vertical"
4.
android:layout\_width="fill\_parent"
5.
android:layout\_height="fill\_parent"
6.
\>
7.
\<TextView
8.
android:layout\_width="fill\_parent"
9.
android:layout\_height="wrap\_content"
10.
android:text="@string/hello"
11.
/\>
12.
\<Button
13.
android:id="@+id/myButton"
14.
android:layout\_width="fill\_parent"
15.
android:layout\_height="wrap\_content"
16.
android:text="@string/first\_button"
17.
/\>
18.
\</LinearLayout\>
第二个Activity的布局文件(Second.xml):
\
Xml代码
[](javascript:void() "收藏这段代码")
1.
\<?xml version="1.0" encoding="utf-8"?\>
2.
\<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3.
android:orientation="vertical"
4.
android:layout\_width="fill\_parent"
5.
android:layout\_height="wrap\_content"
6.
\>
7.
\<TextView
8.
android:layout\_width="fill\_parent"
9.
android:layout\_height="wrap\_content"
10.
\>\</TextView\>
11.
\<Button
12.
android:id="@+id/secondButton"
13.
android:layout\_width="fill\_parent"
14.
android:layout\_height="wrap\_content"
15.
android:text="@string/second\_button"
16.
/\>
17.
\</LinearLayout\>
AndroidManifest.xml:
\
Xml代码
[](javascript:void() "收藏这段代码")
1.
\<?xml version="1.0" encoding="utf-8"?\>
2.
\<manifest xmlns:android="http://schemas.android.com/apk/res/android"
3.
package="mars.activity05"
4.
android:versionCode="1"
5.
android:versionName="1.0"\>
6.
\<application android:icon="@drawable/icon" android:label="@string/app\_name"\>
7.
\<activity android:name=".FirstActivity"
8.
android:label="@string/app\_name"\>
9.
\<intent-filter\>
10.
\<action android:name="android.intent.action.MAIN" /\>
11.
\<category android:name="android.intent.category.LAUNCHER" /\>
12.
\</intent-filter\>
13.
\</activity\>
14.
\<activity android:name=".SecondActivity"
15.
android:label="SecondActivity"
16.
android:theme="@android:style/Theme.Dialog"/\>
17.
18.
\</application\>
19.
\<uses-sdk android:minSdkVersion="4" /\>
20.
21.
\</manifest\>
FirstActivity.java:
\
Java代码
[](javascript:void() "收藏这段代码")
1.
package mars.activity05;
2.
3.
import android.app.Activity;
4.
import android.content.Intent;
5.
import android.os.Bundle;
6.
import android.view.View;
7.
import android.view.View.OnClickListener;
8.
import android.widget.Button;
9.
10.
public class FirstActivity extends Activity {
11.
12.
private Button myButton;
13.
14.
@Override
15.
public void onCreate(Bundle savedInstanceState) {
16.
System.out.println("FirstActivity ---\> onCreate ");
17.
super.onCreate(savedInstanceState);
18.
setContentView(R.layout.main);
19.
myButton = (Button) findViewById(R.id.myButton);
20.
myButton.setOnClickListener(new ButtonListener());
21.
}
22.
23.
@Override
24.
protected void onDestroy() {
25.
26.
System.out.println("FirstAcvity ---\>onDestory");
27.
super.onDestroy();
28.
}
29.
30.
@Override
31.
protected void onPause() {
32.
33.
System.out.println("FirstAcvity ---\>onPause");
34.
super.onPause();
35.
}
36.
37.
@Override
38.
protected void onRestart() {
39.
40.
System.out.println("FirstAcvity ---\>onRestart");
41.
super.onRestart();
42.
}
43.
44.
@Override
45.
protected void onResume() {
46.
47.
System.out.println("FirstAcvity ---\>onResume");
48.
super.onResume();
49.
}
50.
51.
@Override
52.
protected void onStart() {
53.
54.
System.out.println("FirstAcvity ---\>onStart");
55.
super.onStart();
56.
}
57.
58.
@Override
59.
protected void onStop() {
60.
61.
System.out.println("FirstAcvity ---\>onStop");
62.
super.onStop();
63.
}
64.
65.
class ButtonListener implements OnClickListener {
66.
67.
@Override
68.
public void onClick(View v) {
69.
70.
Intent intent = new Intent();
71.
intent.setClass(FirstActivity.this, SecondActivity.class);
72.
FirstActivity.this.startActivity(intent);
73.
}
74.
75.
}
76.
77.
}
SecondActivity.java:
\
Java代码
[](javascript:void() "收藏这段代码")
1.
package mars.activity05;
2.
3.
import android.app.Activity;
4.
import android.content.Intent;
5.
import android.os.Bundle;
6.
import android.view.View;
7.
import android.view.View.OnClickListener;
8.
import android.widget.Button;
9.
10.
public class SecondActivity extends Activity{
11.
12.
private Button secondButton;
13.
14.
@Override
15.
protected void onCreate(Bundle savedInstanceState) {
16.
System.out.println("SecondActivity---\>onCreate");
17.
18.
super.onCreate(savedInstanceState);
19.
setContentView(R.layout.second);
20.
secondButton = (Button)findViewById(R.id.secondButton);
21.
secondButton.setOnClickListener(new ButtonListener());
22.
}
23.
24.
@Override
25.
protected void onDestroy() {
26.
27.
System.out.println("SecondActivity---\>onDestory");
28.
super.onDestroy();
29.
}
30.
31.
@Override
32.
protected void onPause() {
33.
34.
System.out.println("SecondActivity---\>onPause");
35.
super.onPause();
36.
}
37.
38.
@Override
39.
protected void onRestart() {
40.
41.
System.out.println("SecondActivity---\>onRestart");
42.
super.onRestart();
43.
}
44.
45.
@Override
46.
protected void onResume() {
47.
48.
System.out.println("SecondActivity---\>onResume");
49.
super.onResume();
50.
}
51.
52.
@Override
53.
protected void onStart() {
54.
55.
System.out.println("SecondActivity---\>onStart");
56.
super.onStart();
57.
}
58.
59.
@Override
60.
protected void onStop() {
61.
62.
System.out.println("SecondActivity---\>onStop");
63.
super.onStop();
64.
}
65.
66.
class ButtonListener implements OnClickListener{
67.
68.
@Override
69.
public void onClick(View v) {
70.
71.
Intent intent = new Intent();
72.
intent.setClass(SecondActivity.this, FirstActivity.class);
73.
SecondActivity.this.startActivity(intent);
74.
}
75.
76.
}
77.
}