一,生命周期图
二,几点说明
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、保存数据
- //暂停:onStart()->onResume()->onPause()
- @Override
- protected void onPause() {
- super.onPause();
- Log.e("Lifecycle_Activity1", "onPause()");
-
- //把数据保存到类似于Session之类的存储集合里面
- SharedPreferences.Editor saveData = getPreferences(0).edit();
- saveData.putString("value", et_string.getText().toString());
- saveData.commit();
- }
- //重启:onStart()->onResume()
- @Override
- protected void onResume() {
- super.onResume();
- Log.e("Lifecycle_Activity1", "onResume()");
-
- //从共享数据存储对象中获取所需的数据
- SharedPreferences getData = getPreferences(0);
- String value = getData.getString("value", null);
- if(value != null) {
- et_string.setText(value);
- }
- }
http://download.csdn.net/detail/superjunjin/8539511