您的位置:首页 > 移动开发 > Android开发

Android---7---活动及活动的生命周期

2015-04-10 11:16 190 查看
什么是Activity

简单的说Activity就是布满整个窗口或者悬浮于其他窗口上的交互界面,也就是手机屏幕上所显示的内容。

在一个应用程序中通常由多个Activity构成,都会在Manifest.xml中指定一个主的Activity。Intent-filter中的两行代码非常重要,表示该活动是主活动。

当程序第一次运行时就可以看到这个Activity,这个Activity可以通过启动其他的Activity进行相关操作。当启动其他的Activity时,这个当前的活动就会停止,被压入栈底,新的活动会在栈顶并运行。当用户按Back键时,当前活动会被销毁,前一个活动重新恢复运行。



活动的生命周期:

活动的七个方法与三个阶段:

1.onCreate()

每个活动都会有的方法,在活动第一次被创建的时候调用

2.OnStart

这个活动在活动由不可见变为可见的时候调用

3.OnResume

这个方法在活动准备好和用户进行交互的时候调用,此时的活动一定位于返回栈的栈顶,并且处于运行状态。

4. onPause()

这个方法在系统准备去启动或者恢复另一个活动的时候调用。 我们通常会在这个方

法中将一些消耗 CPU 的资源释放掉,以及保存一些关键数据,但这个方法的执行速度

一定要快,不然会影响到新的栈顶活动的使用。

5.onStop()

这个方法在活动完全不可见的时候调用。它和 onPause()方法的主要区别在于,如

果启动的新活动是一个对话框式的活动,那么 onPause()方法会得到执行,而 onStop()

方法并不会执行。

6.onDestroy()

这个方法在活动被销毁之前调用,之后活动的状态将变为销毁状态。

7.onRestart()

这个方法在活动由停止状态变为运行状态之前调用,也就是活动被重新启动了。





以上七个方法中除了 onRestart()方法,其他都是两两相对的,从而又可以将活动分为三

种生存期。



三个阶段:

1.开始Activity:在这个阶段依次执行3个生命周期的方法,分别是:onCreate、onStart和onResume方法

2.Activity重新获得焦点:如果Activity重新获得焦点,会依次执行3个方法,onRestart、onStart和onResume

3.关闭Activity:当Activity被关闭时系统会依次执行3个方法,onPause、onStop和onDestory。







从以上的Activity的生命周期不难看出,该图包含了两层循环,第一层循环是:onPause->onResume->onPause

第二层循环是:onStart->onRestart->onResume->onPause->onStop



第一层循环称为是 焦点生命周期,第二层循环可以视为生命周期。也就是说,第一层循环是在Activity焦点获得与失去的过程中循环,在这个过程中,Activity始终是可见的

第二层循环是Activity可见和不可见的过程中循环。

package com.example.android_life;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;

public class MainActivity extends Activity {

	private String TAG = "MainActivity";

	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		Log.i(TAG, "onCreate is executed");
	}

	@Override
	protected void onStart() {
		// TODO Auto-generated method stub
		super.onStart();
		Log.i(TAG, "onStart is executed");
	}

	@Override
	protected void onRestart() {
		// TODO Auto-generated method stub
		super.onRestart();
		Log.i(TAG, "onRestart is executed");
	}

	@Override
	protected void onResume() {
		// TODO Auto-generated method stub
		super.onResume();
		Log.i(TAG, "onResume is executed");
	}

	@Override
	protected void onStop() {
		// TODO Auto-generated method stub
		super.onStop();
		Log.i(TAG, "onStop is executed");
	}

	@Override
	protected void onPause() {
		// TODO Auto-generated method stub
		super.onPause();
		Log.i(TAG, "onPause is executed");
	}

	@Override
	protected void onDestroy() {
		// TODO Auto-generated method stub
		super.onDestroy();
		Log.i(TAG, "onDestroy is executed");
	}
}


当程序部署到模拟器上的时候,先出现了onCreate onStart、onResume(创建->启动->运行)方法,这时候,按拨号按钮,会出现onPause、onStop(暂停->停止)方法。按下Back键 onRestart onStart onResume (重启->启动->运行) 退出键 onPause onStop onDestory(暂停->停止->销毁)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: