关于Activity的生命周期

关于Activity的生命周期_第1张图片

如图所示,生命周期主要包括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时调用。


现在用程序方式验证这几个周期方法:

目标效果:

关于Activity的生命周期_第2张图片  关于Activity的生命周期_第3张图片

运行过程为点击第一个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.关于Activity的生命周期_第4张图片

关于Activity的生命周期_第5张图片

关于Activity的生命周期_第6张图片

找到后能发现日志信息全部输出,可以看到程序运行的整个周期。




你可能感兴趣的:(关于Activity的生命周期)