如图所示,生命周期主要包括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.完成后按照上述运行过程运行。
找到后能发现日志信息全部输出,可以看到程序运行的整个周期。