`
104zz
  • 浏览: 1507764 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类

android Activity生命周期详解(图文)

阅读更多

 

首先看一下Android api中所提供的Activity生命周期图:



 

第一:一个Activity正常的生命周期冲启动到销毁过程如下onCreate()->onStart()->onResume()->onPause->onStop()->onDestroy();

代码如下:

 

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;

public class MainActivity extends Activity implements OnClickListener{

	
	private String TAG ="Activity1";
	private Button btn1,btn2,btn3;
	
	//在完成生命周期开始时调用
    @Override
    public void onCreate(Bundle savedInstanceState) {   	
        super.onCreate(savedInstanceState);
        //初始化一个活动
        Log.e(TAG, "onCreate()");
        setContentView(R.layout.activity_main);
        btn1 = (Button) this.findViewById(R.id.btn1);
        btn2 = (Button) this.findViewById(R.id.btn2); 
        btn3 = (Button) this.findViewById(R.id.btn3); 
        btn1.setOnClickListener(this);
        btn2.setOnClickListener(this);
        btn3.setOnClickListener(this);
    }
    
    //在onCreate方法完成后调用,用于恢复UI状态
    @Override
    protected void onRestoreInstanceState(Bundle savedInstanceState) {
    	super.onRestoreInstanceState(savedInstanceState);
    	//从savedInstanceState恢复UI状态
    	//这个Bundle也被传递给了onCreate
    }

   //在可见生存期的开始时调用
	@Override
	protected void onStart() {
		 Log.e(TAG, "onStart()");
		super.onStart();
		//既然活动可见,就应用任何要求的UI活动
	}
	
	 //在随后的活动进程可见生命周期之前调用
	@Override
	protected void onRestart() {
		 Log.e(TAG, "onRestart()");
		super.onRestart();
		//加载活动可见,知道活动在此进程中已经可见
	}
	//在活动状态生存期开始调用
	@Override
	protected void onResume() {
		Log.e(TAG, "onResume()");
		super.onResume();
		//恢复活动需要,但是当它处于不活动状态时被挂起的暂停的UI更新,线程或进程
	}

	//在活动生命周期结束的时候调用,用来保存UI状态的改变
	@Override
	protected void onSaveInstanceState(Bundle outState) {
		super.onSaveInstanceState(outState);
		//把UI改变状态保存到outState
		//如果进程被终止并被启动,那么这个Bundle将被传递给onCreate
	}
	
	//在活动状态生存期结束时调用
	@Override
	protected void onPause() {
		Log.e(TAG, "onPause()");
		//当活动不是前台的活动状态的活动时
		//挂起不需要更新的UI更新,线程或者CPU密集的进程
		super.onPause();
	}

	//在可以生存期结束时调用
	@Override
	protected void onStop() {
		Log.e(TAG, "onStop()");
		//当活动不可见时,挂起不需要的UI更新,线程或处理
		//保存所有的编辑或者状态改变,因为在调用这个方法后,进程可能就会被终止
		super.onStop();
	}

	//在完整生存周期结束时调用
	@Override
	protected void onDestroy() {
		Log.e(TAG, "onDestroy()");
		//清理所有资源,包括结束线程,关闭数据库连接等
		super.onDestroy();
	}

	public void onClick(View v) {
		if(v==btn1){
			startActivity(new Intent(this,Activity2.class));
		}else if(v==btn2){
			startActivity(new Intent(this,Activity2.class));
			finish();
		}else if(v==btn3){
			finish();			
		}
		
	}
        
}
 

完整生存期:

活动完整生存期是指对onCreate方法第一次调用和对onDestory方法的最后一次嗲用之间的时间范围。在某种情况下,还有另一种可能,即一个活动的进程被终止,却没有调用onDestory方法。

可见生存期:

一个活动的可见生存期是指调用onStartonStop之间的那段时间。在这个时间里,活动对用户是可见的,但是它有可能不具有焦点,或者它可能被部分遮住了。

活动生存期:

活动生存期是指调用onResumeonPause之间的那段时间。一个处于活动状态的活动是前台的,并且正在接收用户的输入事件。注意,尽量让onResumeonPause中的代码执行迅速,并且其中的代码尽可能的少,以保证在前台和后台之间进行切换的时候应用能够保持响应。

 

 

下面为生命周期的执行过程函数的调用:


1.启动过程:onCreate()->onStart()->onResume();如下图:



 

 

2.销毁过程:onPause->onStop()->onDestroy();



 

 

3.不销毁跳转到第二个Activity过程:onPause->onStop();



 

4.再从第二个activiy返回第一个Activity(在第一个Activity没有销毁的情况下)的过程:

onRestart()->onStart()->onResume();



 

5.按下home键执行的过程:onPause()->onStop();



 

6.按下返回键执行的过程:onPause()->onStop()->onDestroy();

 



 

 

OK就这么简单,还不懂的大家写一个项目自己测试慢慢摸索,基本上懂了这几个生命周期的过程对,Activiy的灵活使用开发应该没什么问题了。

 

下面再附上测试图:

第一个Activity如下:



 

第二个activiy:



 

下面把本实例的代码页附上

  • 大小: 50.1 KB
  • 大小: 4.6 KB
  • 大小: 16 KB
  • 大小: 12.6 KB
  • 大小: 14.2 KB
  • 大小: 13.2 KB
  • 大小: 16.8 KB
  • 大小: 25.4 KB
  • 大小: 25.4 KB
1
3
分享到:
评论

相关推荐

    Android_Activity生命周期详解(图文)

    ### Android Activity 生命周期详解 #### 一、概述 在Android开发中,`Activity`是四大组件之一,用于构建用户界面,并负责与用户的交互。一个`Activity`通常对应着一个屏幕,当用户在一个应用的不同屏幕间导航时...

    两分钟让你彻底明白Android Activity生命周期的详解(图文介绍)

    这是Activity生命周期中的活动状态。 4. **onPause()**:当Activity被部分或完全覆盖,但仍可见(例如弹出一个透明对话框)时调用。在此阶段,应保存临时数据,但不应进行耗时操作,因为这会影响用户体验。 5. **...

    初识Android-开发环境图文详解PPT

    本文将通过图文详解的方式带你深入理解Android开发环境的基本构成,并对关键概念如Activity、配置文件、布局文件、常用控件以及Intent进行详细介绍。 首先,我们来认识一下Android。Android是一种基于Linux内核的...

    Android开发应用实战详解源代码

    2.5 activity的生命周期 2.5.1 activity状态 2.5.2 剖析activity 2.6 android进程和线程 2.6.1 进程 2.6.2 线程 2.6.3 远程调用(remote procedure calls) 2.7 intent消息传递 2.8 intent广播事件 2.8.1 广播事件 ...

    android开发资料大全

    两分钟彻底让你明白Android Activity生命周期(图文)! Android 图形系统剖析 Android 立体效果图片 NDK动态库的调用 Android 姿态传感器 Android 很酷的图像旋转 Android 添加音频 在Android中实现多线程断点下载 ...

    09-FloatLayout-Activity

    通过这个项目,开发者可以学习到自定义布局的创建方法,了解如何在Android中实现类似CSS的布局效果,同时掌握Android活动的生命周期和用户交互的处理。这对于提升Android应用的界面设计和用户体验具有重要的实践意义...

Global site tag (gtag.js) - Google Analytics