Android应用程序由很多的Activity组成,本例将简单说明Activity的生命周期过程:
new一个Android应用程序,其中先new两个Activity用来演示(FirstActivity、SecondActivity):
FirstActivity:
布局first.xml:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".FirstActivity" >
<Button
android:id="@+id/myButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:text="@string/hello_first" />
</RelativeLayout>
对应的FirstActivity.java:
package com.example.activity_04;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class FirstActivity extends Activity {
private Button myBtn;
class BtnClickListener implements OnClickListener{
@Override
public void onClick(View arg0) {
Intent intent=new Intent();
intent.setClass(FirstActivity.this, SecondActivity.class);
FirstActivity.this.startActivity(intent);
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
System.out.println("FirstActivity ---> onCreate");
super.onCreate(savedInstanceState);
setContentView(R.layout.first);
myBtn=(Button)findViewById(R.id.myButton);
myBtn.setOnClickListener(new BtnClickListener());
}
@Override
protected void onStart() {
System.out.println("FirstActivity ---> onStart");
super.onStart();
}
@Override
protected void onRestart() {
System.out.println("FirstActivity ---> onRestart");
super.onRestart();
}
@Override
protected void onResume() {
System.out.println("FirstActivity ---> onResume");
super.onResume();
}
@Override
protected void onPause() {
System.out.println("FirstActivity ---> onPause");
super.onPause();
}
@Override
protected void onStop() {
System.out.println("FirstActivity ---> onStop");
super.onStop();
}
@Override
protected void onDestroy() {
System.out.println("FirstActivity ---> onDestroy");
super.onDestroy();
}
}
重写了Activity生命周期内的七个重要事件:onCreate、onStart、onResume、onPause、onStop、onRestart、onDestory,
在他们被执行时,分别输出"Activity名 ---> 事件名",
同样的方式new一个SecondActivity:
布局second.xml:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".SecondActivity" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:text="@string/hello_second" />
</RelativeLayout>
对应的SecondActivity.java:
package com.example.activity_04;
import android.app.Activity;
import android.os.Bundle;
public class SecondActivity extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
System.out.println("SecondActivity ---> onCreate");
super.onCreate(savedInstanceState);
setContentView(R.layout.second);
}
@Override
protected void onStart() {
System.out.println("SecondActivity ---> onStart");
super.onStart();
}
@Override
protected void onRestart() {
System.out.println("SecondActivity ---> onRestart");
super.onRestart();
}
@Override
protected void onResume() {
System.out.println("SecondActivity ---> onResume");
super.onResume();
}
@Override
protected void onPause() {
System.out.println("SecondActivity ---> onPause");
super.onPause();
}
@Override
protected void onStop() {
System.out.println("SecondActivity ---> onStop");
super.onStop();
}
@Override
protected void onDestroy() {
System.out.println("SecondActivity ---> onDestroy");
super.onDestroy();
}
}
需要观察System.out输出的信息,需要添加输出log的过滤器:
1.打开DMMS页:

2.添加一个过滤器:

3.输入过滤器想要过滤出的内容:

过滤器过滤出的信息将会被显示在LogCat窗口中
启动Android模拟器,运行一下程序,分别执行以下步骤,观察System.out的输出:
1.启动程序,首先打开的是FirstActivity(之前已在AndroidManifest.xml中配置):

观察输出如下:

2.点击FirstActivity中的Button,切换到SecondActivity:

观察输出如下:

3.点击Android模拟器的返回按钮,跳转回FirstActivity:
观察输出如下:

4.再次点击FirstActivity中的Button,切换到SecondActivity:
观察输出如下:

总结如下:
一个Activity的创建顺序执行:onCreate,onStart,onResume
从FirstActivity启动SecondActivity时,顺序调用:FirstActivity的onPause,然后SecondActivity的onCreate,onStart,onResume,最后是FirstActivity的onStop
七大事件:
onCreate:
当这个Activity第一次被创建的时候调用,在里面去设置布局文件、或者对按钮绑定监听器等一些静态的操作;
onStart:
当这个Activity能被看到的时候调用;
onResume:
当这个Activity能获得用户焦点,用户能操作这个Activity的时候调用;
onPause:
当要启动另一个Activity时调用,例如当你的程序在运行时,有一个来电,系统调用电话,你的程序被遮挡住时调用,一般在里面写一些保存当前Activity操作数据的代码,以便恢复操作时还原数据;
onStop:
当这个Activity对用户而言不可见的时候调用,如果上一个Activity调用出来的是一个小的对话块,没能完全遮挡住这个Activity,则不会调用上一个Activity的onStop;
onRestart:
当一个Activity对用户不可见了以后,但是没有被销毁,再次要显示的时候,就最先调用onRestart,而不需要再调用onCreate;
onDestory:
销毁Activity,如果你在代码里明确调用了finish方法,则会调用销毁,或者当系统资源不够用的时候,也会自动销毁不可见的Activity,如果再启用已经被销毁的Activity时,需要再调用onCreate;
来源:https://www.cnblogs.com/xwlyun/archive/2012/11/24/2786054.html