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()只能执行一次,这就像是人只能出生一次,也只有一次生命。而其它几种没有运行次数的限制,这要看具体的操作了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值