首先看一下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方法。
可见生存期:
一个活动的可见生存期是指调用onStart和onStop之间的那段时间。在这个时间里,活动对用户是可见的,但是它有可能不具有焦点,或者它可能被部分遮住了。
活动生存期:
活动生存期是指调用onResume和onPause之间的那段时间。一个处于活动状态的活动是前台的,并且正在接收用户的输入事件。注意,尽量让onResume和onPause中的代码执行迅速,并且其中的代码尽可能的少,以保证在前台和后台之间进行切换的时候应用能够保持响应。
下面为生命周期的执行过程函数的调用:
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:
下面把本实例的代码页附上