Android之Activity生命周期详细介绍


Android之Activity生命周期史无前例的详细介绍,新手必必必看。

Android的Activity生命周期是一个非常重要的知识点,但是由于Activity的状态众多,而且状态直接的切换类型也十分的众多,导致Activity的方法很多,这就给新手学习并理解Activity造成了一定的难度,如果你能认真读完我这一篇博文,那么我相信你一定能对Activity的理解达到一个崭新的高度,ok,下面是我对Activity的理解。


要想透彻的理解Activity,那么必须了解一个计算机的名词,“堆栈”,因为Activity的状态切换方式十分类似于数据结构中的堆栈。

1、首先介绍什么是堆栈,及其特点。

2、介绍Activity的七个状态方法。

3、结合堆栈,详解Activity状态直接的切换和各个方法的调用。

1)、下面我来介绍一下什么是“堆栈”。

        堆栈 可以简单的理解成一个的 “竹筒”,只不过种竹筒是一端封闭另一端开启的,如图所示:

透过这个竹筒我们不难发现,因为堆栈的一端是封闭的,所以要想往里面放东西,必须从一端放,取的时候也只能从一端取,就是这堆栈最重要的特点,“后进先出”。

2)、下面我要介绍的是Activity的七个状态方法。

附官方文档图一张:

然后附我代码一篇:

  1. package cn.blue.life;  
  2.   
  3. import android.app.Activity;  
  4. import android.content.Intent;  
  5. import android.os.Bundle;  
  6. import android.util.Log;  
  7. import android.view.View;  
  8. import android.view.View.OnClickListener;  
  9. import android.widget.Button;  
  10.   
  11. public class LifteActivity extends Activity {  
  12.     Button bt;  
  13.     protected void onCreate(Bundle savedInstanceState) {  
  14.         super.onCreate(savedInstanceState);  
  15.         this.setContentView(R.layout.main);  
  16.         bt=(Button) this.findViewById(R.id.bt);  
  17.         bt.setText("第一个activity");  
  18.         bt.setOnClickListener(new OnClickListener() {  
  19.             public void onClick(View v) {  
  20.                 Intent intent=new Intent(LifteActivity.this,LifteActivitySecond.class);  
  21.                 startActivity(intent);  
  22.             }  
  23.         });  
  24.         Log.i("Mytag","First----onCreate");  
  25.     }  
  26.     protected void onDestroy() {  
  27.         Log.i("Mytag","First----onDestroy");  
  28.         super.onDestroy();  
  29.     }  
  30.     protected void onPause() {  
  31.         Log.i("Mytag","First----onPause");  
  32.         super.onPause();  
  33.     }  
  34.     protected void onRestart() {  
  35.         Log.i("Mytag","First----onRestart");  
  36.         super.onRestart();  
  37.     }  
  38.     protected void onResume() {  
  39.         Log.i("Mytag","First----onResume");  
  40.         super.onResume();  
  41.     }  
  42.     protected void onStart() {  
  43.         Log.i("Mytag","First----onStart");  
  44.         super.onStart();  
  45.     }  
  46.     protected void onStop() {  
  47.         Log.i("Mytag","First----onStop");  
  48.         super.onStop();  
  49.     }  
  50. //  protected void onRestoreInstanceState(Bundle savedInstanceState) {   
  51. //      Log.i("Mytag","First----onRestoreInstanceState");   
  52. //      super.onRestoreInstanceState(savedInstanceState);   
  53. //  }   
  54. //  protected void onSaveInstanceState(Bundle outState) {   
  55. //      Log.i("Mytag","First----onSaveInstanceState");   
  56. //      super.onSaveInstanceState(outState);   
  57. //  }   
  58. }  

onCreate(Bundle savedInstanceState)
onStart()
onResume()
onPause()

onStop()

onDestroy()
onRestart()

onCreate(Bundle savedInstanceState)
Activity的初始化,也就是一个全新的Activity开始时,调用该方法
onStart()
Activity的启动,当你能够看到Activity时,启动该方法,
onResume()
当Activity获取用户焦点将要与用户交互时调用此方法,此时activity在activity栈的栈顶,用户输入已经可以传递给它
onPause()
当系统要启动一个其他的activity时调用(其他的activity显示之前),这个方法被用来提交那些持久数据的改变、停止动画、和其他占用CPU资源的东西。由于下一个activity在这个方法返回之前不会resumed,所以实现这个方法时代码执行要尽可能快。
如果activity重新回到前景时将调用onResume(), 如果对用户彻底不可见则会调用onStop()。
onStop()
当另外一个activity恢复并遮盖住此activity,导致其对用户不再可见时调用。一个新activity启动、其它activity被切换至前景、当前activity被销毁时都会发生这种场景。
当activity重新回到前景与用户交互时调用onRestart(),如果activity将退出则调用onDestory()。
onDestroy()
在你的activity被销毁前所调用的最后一个方法,当进程终止时会出现这种情况
onRestart()
当activity从停止状态重新启动时调用。其后调用onResume()。

  • 1
  • 2
  • 下一页

相关内容