首先看一下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方法。

可见生存期:

一个活动的可见生存期是指调用onStartonStop之间的那段时间。在这个时间里,活动对用户是可见的,但是它有可能不具有焦点,或者它可能被部分遮住了。

活动生存期:

活动生存期是指调用onResumeonPause之间的那段时间。一个处于活动状态的活动是前台的,并且正在接收用户的输入事件。注意,尽量让onResumeonPause中的代码执行迅速,并且其中的代码尽可能的少,以保证在前台和后台之间进行切换的时候应用能够保持响应。

下面为生命周期的执行过程函数的调用:


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:




下面把本实例的代码页附上

更多相关文章

  1. android Activity生命周期详解(图文)
  2. [置顶] [Android] AsyncTask使用实例---加载网络图片
  3. Android(安卓)剪切板监听
  4. android 竖屏activity跳转横屏activity返回时数据消失
  5. Android(安卓)获取网络状态及调用网络配置界面(转帖)
  6. Android(安卓)GPS学习 (一) :GPS 启动流程
  7. Android上调用google map api v2
  8. 浅析android下如何通过jni监控wifi网络连接、dhcpcd执行和power
  9. Android上传文件到Web服务器,PHP接收文件(二)

随机推荐

  1. android 抽屉式滑动demo
  2. android button多状态, selector
  3. 修改ScrollView滚动条样式
  4. Android Studio Toast/Notification中文
  5. Android Overview
  6. Android的Adapter与BaseAdapter的介绍
  7. Android 控件属性
  8. Android练习——Spinner二级联动_城市选
  9. Android屏幕尺寸、标题栏高度、状态栏高
  10. Android解析json数组对象