欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Android 之Activity的生命周期

程序员文章站 2022-05-17 14:38:34
...


Activity生命周期:

在系统中Activity被一个Activity栈管理,当一个新的Activity启动的时,将被放置到栈顶,成为运行中的Acrivity,
前一个Activity保留在栈中,不再放到前台,直到新的Activity退出为止;

Activity有四种本质区别的状态:在屏幕前台(栈顶的),叫做活动状态或者运行状态(active or running);如果一个Acrivity
失去了焦点,但依然可见(一个新的非全屏的Activity或者一个透明的Activity 被放置到了栈顶) , 叫做暂停状态(Paused);一个暂停
状态的Activity仍然保持活力(保持所有的状态,成员信息,和窗口管理器保持连接),但是在系统极端低下的时候将被杀掉;如果
一个Activity被另一个Activity完全覆盖掉,叫做停止状态(Stopped);它依然保持所有状态和成员信息,但是它不可见,所以它的
窗口被隐藏,同样当内存不足的时候被系统抹杀掉;Android系统使用两种方式进行删除,要么要求该Activity结束,要么直接关掉
进程。当该Activity要再次显示给用户时,必须重新开始和重置前面的状态;


生命周期的循环中有三个关键的问题:
1、整个的生命周期:从onCreate(Bundle); 开始到onDestroy();结束。Activity在onCreate(Bundle)中设置所有的全局状态
在onDestroy(),释放所有的资源;

2、可见的生命周期:从onStrat(); 开始到onStop();结束。在这段时间,可以看到Activity在屏幕上,尽管有可能不在前台,
不能和用户交互。在这两个接口之间,需要保持显示给用户的UI数据和资源等;

3、前台的生命周期:从onResume();开始到onPause();结束,这段时间里,该Activity处于所有的Activity的最前面,和用户
进行交互。Activity可以经常性的在resumed和paused状态之间切换;


以下接口定了Activity的整个生命周期方法:

	public class Activity extends ApplicationContext{
		protected void onCreate(Bundle icicle);
		protected void onStart();
		protected void onRestart();
		protected void onResume();
		protected void onFreeze(Bundle outIcicle);
		protected void onPause();
		protected void onStop();
		protected void onDestroy();
	
	}

//生命周期代码切换
package com.example.lifetcycle;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

/* Activity生命周期 ,代码说明  */
public class MainActivity extends Activity {

	/* 初始化activity,这儿通常用于调用资源文件中的UI */
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		Log.i("MainActivity", "执行:onCreate()");
		
		/* 生命周期,Activity之间跳转阶段测试 */
		Button btn = (Button) findViewById(R.id.btn);
		btn.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				Intent intent = new Intent(MainActivity.this,SecondActivity.class);
				startActivity(intent);
			}
		});
		
	}

	/* 开始阶段 */
	protected void onStart() {
		// TODO Auto-generated method stub
		super.onStart();
		Log.i("MainActivity", "执行:onStart()");
	}

	/* 重启  */
	protected void onRestart() {
		// TODO Auto-generated method stub
		super.onRestart();
		Log.i("MainActivity", "执行:onRestart()");
	}

	/* 运行 */
	protected void onResume() {
		// TODO Auto-generated method stub
		super.onResume();
		Log.i("MainActivity", "执行:onResume()");
	}

	/* 暂停阶段 *//* 使用这准备离开activity的地方  */
	protected void onPause() {
		// TODO Auto-generated method stub
		super.onPause();
		Log.i("MainActivity", "执行:onPause()");
	}
	
	/* 停止阶段 */
	protected void onStop() {
		// TODO Auto-generated method stub
		super.onStop();
		Log.i("MainActivity", "执行:onStop()");
	}
	
	/* 销毁阶段 */
	protected void onDestroy() {
		// TODO Auto-generated method stub
		super.onDestroy();
		Log.i("MainActivity", "执行:onDestroy()");
	}



}





被请求的Activity:
import android.app.Activity;
import android.os.Bundle;

public class SecondActivity extends Activity {

	/* 测试生命周期  */
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
	}
	
}

相关标签: android