《Android第一行代码》学习记录005 - 关于活动的生命周期与活动被回收所产生的问题

先上一张大图

一、Activity类的7个回调方法

  • onCreate(): 只在活动第一次被创建时被调用,应当在这里加载布局、绑定事件等什么的
  • onStart(): 当活动由不可见变为可见时被调用
  • onResume(): 在活动准备好与用户进行交互时调用
  • onPause(): 系统准备去启动或恢复另一个活动时调用,通常在这里将一些消耗CPU的资源释放、保存关键数据等,但这个方法的执行速度要快,不然会影响到新的栈顶活动使用
  • onStop(): 在活动完全不可见时被调用
  • onDestroy(): 活动被销毁前调用
  • onRestart(): 活动由停止状态变为运行状态前调用

二、三种生存期

  • 完整生存期: 活动从onCreate()方法到onDestroy()方法之间所经历的就是完整生存期
  • 可见生存期: 活动从onStart()方法到onStop()方法之间所经历的就是可见生存期
  • 前台生存期: 活动从onResume()方法到onPause()方法之间所经历的就是前台生存期

三、活动被回收了临时数据怎么保存?

1、Activity的onSaveInstanceState(Bundle outState)方法可以保证活动被回收前一定会执行;

2、Activity的onCreate(Bundle savedInstanceState)方法可以通过Bundle类型的参数获取上一步保存的全部数据

重载onSaveInstanceState()方法:

1 // override
2 protected void onSaveInstanceState(Bundle outState) {
3   super.onSaveInstanceState(outState);
4   String tempString = "这是需要保存的临时字符串";
5   outState.putString("data_key", tempString);
6 }

重载onCreate()方法时判断是否存在临时保存的数据:

 1 // override
 2 protected void onCreate(Bundle savedInstanceState) {
 3   super.onCreate(savedInstanceState);
 4   setContentView(R.layout.xxx);
 5   
 6   if (savedInstanceState != null) {
 7     String tempString = savedInstanceState.getString("data_key");
 8     .... // 其他处理
 9   }
10 }

 

posted on 2015-10-20 16:34  matclone  阅读(238)  评论(0)    收藏  举报

导航