如图所示,生命周期主要包括onCreate(),onStart(),onResume(),onPause(),onStop(),onDestroy(),onRestart()方法。
onCreate():Activity第一次被创建的时候调用。
onStart():Activity由不可见变为可见的时候调用。
onResume():当Activity界面可与用户交互时调用,此时的Activity一定位于返回栈的栈顶,并且处于运行状态。
onPause():当系统要启动一个其他的Activity时调用,用于保存当前数据。
onStop():该Activity已经不可见时调用,它和onPause()方法的主要区别在于,如果启动的新Activity是一个对话框式的Activity,那么onPause()会得到执行,而onStop()方法并不会执行。
onDestroy():当Activity被finish或手机内存不足被销毁的时候调用。
onRestart():重新启动Activity时调用。
现在用程序方式验证这几个周期方法:
目标效果:
运行过程为点击第一个toNewActivity按钮,跳出提示Hello world!的页面,返回反击toDialogActivity按钮,跳出黑色对话框,最后按返回键全部退出。
1.除了MainActivity.java,再另外建newActivity.java,DialogActivity.java。
2.activity_main.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"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<Button
android:id="@+id/btNewActivity"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="108dp"
android:text="toNewActivity" />
<Button
android:id="@+id/btDialogActivity"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:text="toDialogActivity" />
</RelativeLayout>
activity_main.xml页面定义两个Button控件,分别设置id属性
3.MainActivity.java页面:
package com.example.period;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) { //Activity第一次被创建时调用
Log.d("MainActivity","onCreat"); //输出日志用于查看
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btNewActivity=(Button) findViewById(R.id.btNewActivity); //实例两个按钮
Button btDialogActivity=(Button) findViewById(R.id.btDialogActivity); //实力两个按钮
btNewActivity.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent(MainActivity.this,NewActivity.class);
startActivity(intent);
}
});
btDialogActivity.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent(MainActivity.this,DialogActivity.class);
startActivity(intent);
}
});
}
@Override
protected void onDestroy() { //Activity被销毁时调用
super.onDestroy();
Log.d("MainActivity","onDestroy");
}
@Override
protected void onPause() { //Activity停止时调用
super.onPause();
Log.d("MainActivity","onPause");
}
@Override
protected void onResume() { //Activity重新获得焦点时调用
super.onResume();
Log.d("MainActivity","onResume");
}
@Override
protected void onRestart() { //Activity重新启动时调用
super.onRestart();
Log.d("MainActivity","onRestart");
}
@Override
protected void onStart() { //Activity变为可见时调用,调用过onRestart()后一定调用onStart()
super.onStart();
Log.d("MainActivity","onStart");
}
@Override
protected void onStop() { //Activity变为不可见时调用,调用onStop()前边一定调用了onPause()
super.onStop();
Log.d("MainActivity","onStop");
}
在MainActivity.java页面中,右键Source,选择Override/Implement Menthods...,在框中找到除了oncreate()以外的六个方法,选中确定,这是实现父类方法。并在加上onCreate()的七个方法中都定义Log.d(" "," ");这是使用日志猫打印信息,是一种键值对,前边为键名,后边为所要输出的信息。
4.activity_new.xml,NewActivity.java,activity_dialog.xml,DialogActivity.java页面新建好后不做修改。
5.因为DialogActivity.java和activity_dialog.xml所表示的为对话框,所以在AndroidMainfest.xml页面中表示该对话框页面的<activity>标签中加入
android:theme="@android:style/Theme.Dialog"
表示应用系统中的对话框主题。
6.完成后按照上述运行过程运行。
7.
找到后能发现日志信息全部输出,可以看到程序运行的整个周期。