Activity的生命周期


一,生命周期图

Activity的生命周期_第1张图片

二,几点说明

1,每一个活动的Activity 都处于某一个状态,对于开发者来说,是无法控制其应用程序处于某一个状态的,这些均由系统来完成。

2,但是当一个活动的状态发生改变的时候,开发者可以通过调用 onXX() 的方法获取到相关的通知信息。


三,几大方法

1,onCreate :Activity第一次被实例化的时候系统会调用,整个生命周期只调用1次该方法。
     通常用于初始化设置: 1、为Activity设置所要使用的布局文件。2、为安卓控件绑定监听器等静态的设置操作。

2,onStart(可见不可交互):当Activity可见未获得用户焦点不能交互时系统会调用。

3,onResume(可见可交互) :当Activity和用户发生交互的时候,触发该方法。

4,onPause (有一点可见不能交互):当一个正在前台运行的Activity因为其他的Activity需要前台运行而转入后台运行的时候,触发该方法。

5,onStop(不可见不能交互):当Activity被其他的Activity完全覆盖不可见时,触发该方法,如果内存紧张,系统会直接结束这个Activity,而不会触发 onStop 方法。

6,onRestart :当处于停止状态的Activity需要再次展现给用户的时候,触发该方法。

7,onDestroy :当Activity(用户调用finish()或系统由于内存不足)被系统销毁时调用,(整个生命周期只调用1次)用来释放onCreate ()方法中创建的资源,如结束线程,清空数据,注销广播等。和 onStop 方法一样,如果内存紧张,系统会直接结束这个Activity而不会触发该方法。


四,保存数据和提取数据

因为onstop和onDestroy 都有可能因为系统内存紧张而不执行,所以建议保存数据的方法就是肯定会执行的onPause

一般在onPause()方法里面保存数据,在onResume()里面提取数据。

     a、保存数据

  1. //暂停:onStart()->onResume()->onPause()
  2.     @Override    
  3.     protected void onPause() {        
  4.         super.onPause();
  5.         Log.e("Lifecycle_Activity1", "onPause()");
  6.         
  7.         //把数据保存到类似于Session之类的存储集合里面
  8.         SharedPreferences.Editor saveData = getPreferences(0).edit();
  9.         saveData.putString("value", et_string.getText().toString());
  10.         saveData.commit();
  11.     }
        b、提取数据
  1. //重启:onStart()->onResume()
  2.     @Override    
  3.     protected void onResume() {        
  4.         super.onResume();
  5.         Log.e("Lifecycle_Activity1", "onResume()");
  6.         
  7.         //从共享数据存储对象中获取所需的数据
  8.         SharedPreferences getData = getPreferences(0);
  9.         String value = getData.getString("value", null);
  10.         if(value != null) {
  11.             et_string.setText(value);
  12.         }
  13.     }
五,代码(简单的两个activity看看方法的执行顺序什么的)

http://download.csdn.net/detail/superjunjin/8539511


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