android Activity生命周期详解(图文)
首先看一下Androidapi中所提供的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 } //在可见生存期的开始时调用@Overrideprotected void onStart() { Log.e(TAG, "onStart()");super.onStart();//既然活动可见,就应用任何要求的UI活动} //在随后的活动进程可见生命周期之前调用@Overrideprotected void onRestart() { Log.e(TAG, "onRestart()");super.onRestart();//加载活动可见,知道活动在此进程中已经可见}//在活动状态生存期开始调用@Overrideprotected void onResume() {Log.e(TAG, "onResume()");super.onResume();//恢复活动需要,但是当它处于不活动状态时被挂起的暂停的UI更新,线程或进程}//在活动生命周期结束的时候调用,用来保存UI状态的改变@Overrideprotected void onSaveInstanceState(Bundle outState) {super.onSaveInstanceState(outState);//把UI改变状态保存到outState//如果进程被终止并被启动,那么这个Bundle将被传递给onCreate}//在活动状态生存期结束时调用@Overrideprotected void onPause() {Log.e(TAG, "onPause()");//当活动不是前台的活动状态的活动时//挂起不需要更新的UI更新,线程或者CPU密集的进程super.onPause();}//在可以生存期结束时调用@Overrideprotected void onStop() {Log.e(TAG, "onStop()");//当活动不可见时,挂起不需要的UI更新,线程或处理//保存所有的编辑或者状态改变,因为在调用这个方法后,进程可能就会被终止super.onStop();}//在完整生存周期结束时调用@Overrideprotected 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:
下面把本实例的代码页附上
更多相关文章
- Android Studio使用过程中遇到的问题(一)-- "value 2"异常解决方法
- 获取Android状态栏的高度
- Android 系统启动过程简略分析
- live555移植到Android过程.
- Android应用程序中Activity的生命周期
- ionic3中android状态栏
- Android 中broadcast 注册过程解析
- activity生命周期及横竖屏切换