Activity的生命周期你知几何?

      人从出生到离去,用文学的话来说是一个轮回,用生物学上的话来说是一个生命周期。什么是生命周期,生命周期是指一个事物从产生到消失的这一个过程,一棵树从种子到死亡,是一个周期;一个企业从创办到破产,是一个周期,同样的,一个程序也有生命周期。在Android开发中,Activity是用户与程序交互的界面,而用户使用手机用的最多的恐怕就是界面了。那么掌握Activity的生命周期,即界面的生命周期就尤为重要了。
      Android中控制生命周期是通过用一些方法在系统中运行的顺序来控制的,这些函数有
onCreate(),onStart()、onResume()、onPause()、onStop()、onDestroy()等。
顾名思义,我们应该能够猜到其执行顺序。那么我们可以来做一个简单的小测试,测试这些方法到底在什么时候执行,这些方法又是怎么来控制一个Activity的生命周期的。
      写一段代码,分别实现其以上函数:

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
                  //创建按钮对象
Button jump=(Button)findViewById(R.id.jump);
jump.setOnClickListener(new LoginListener());

System.out.println("执行了onCreat方法");
       }
}

    public class LoginListener implements OnClickListener{
//实现接口抽象方法
       public void onClick(View v){
         Intent intent=new Intent();
intent.setClass(MainActivity.this,newActivity.class);
MainActivity.this.startActivity(intent);
finish();//销毁当前Activity
Toast.makeText(MainActivity.this, "成功跳转", 2).show();
   }
}
//执行生命周期各方法
    protected void onStart(){
    super.onStart();
    System.out.println("执行了onStart方法");
    }
    protected void onResume(){
    super.onResume();
    System.out.println("执行了onResume");
    }
    protected void onPause(){
    super.onPause();
    System.out.println("执行了onPause方法");
    }
    protected void onStop(){
    super.onStop();
    System.out.println("执行了onStop方法");
   }
    protected void onDestroy(){
    super.onDestroy();
    System.out.println("执行了onDestroy方法");
    }
   
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}

}
      执行这段代码,观察其输出结果,我们可以看到,
      在这个阶段我们看到执行了onCreat()和onStart()方法,而且先是执行了前者,onCreat()方法是在其创建Activity时执行的,这在创建一个Activity时,系统总是自动提供了onCreat()方法时,就可以猜想该方法是在创建时调用的,不然为什么你创建的时候为什么该方法总必须写呢!而事实也确实是在该阶段执行的。那么onStart()方法呢?该方法是Activity在屏幕对用户可见时调用的,也就是说,想让用户看见这个Activity就必须通过onStart()方法。先创建creat,再送到用户面前start。
     然后你可以在该Activity上执行某些操作,也就是用户与程序产生交互,是的,此时正是onResume()方法调用的时候 。当用户开始向此Activity  say hello时,那么这时就是onResume()出马的时候了。
      在MainActivity上创建一个Button,实行监听,当跳转的那一瞬间执行了onPause()方法,即是当此门面被暂停时,此时跳转到另一门面(Activity)时,原来的被暂停,此时调用的即为onPause()方法,而当newActivity完全显示在用户面前时,那么原来的MainActivity该执行生命周期里面的哪个函数呢,我们可以很清楚的想到,此时应该调用的就是onStop()方法。    
       我们分析完此上的几种函数后,只有onDestroy()了,而我们之前说过,一个完整的Activity生命周期必须包括从出现到消失的整个过程,那么onDestroy()就必须是在Activity消失的时候调用的。在这里我点击了返回,先后执行了onPause(),onStop()和onDestroy(),这是因为点击返回时,不能马上跳出该Activity,只能先暂停,之后停止,然后才是销毁,这是一个连续的过程。而且在第一个Activity跳转到第二个Activity时,用了finish方法,此时会调用onDestroy()销毁第一个Activity。
      

  
       综上,我们来做一个总结。
     onCreate():创建Activity调用,用于Activity的初始化,在Activity生命周期中      只执行一次,适用于实例化对象
     onStart():Activity:在屏幕上对用户可见时调用
     onResume():Activity开始和用户交互的时候调用,这时该Activity是在Activity栈的顶部
     onPause():Activity被暂停时调用,被其他的Activity挡在后面,这里可以做一些清理和保存工作
     onStop():Activity被停止或者Activity变成不可见时调用
     onDestroy():Activity被从内存中移除,一般发生在执行finish方法时或者Android回收内存的时候
      在一个生命周期里面,onCreat()和onDestroy()只能执行一次,这就像是人只能出生一次,也只有一次生命。而其它几种没有运行次数的限制,这要看具体的操作了。

你可能感兴趣的:(android,Activity,生命周期)