《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 }
浙公网安备 33010602011771号