onSaveInstanceState微信斗牛棋牌平台搭建场景
2018-03-08 10:22
197 查看
需要注意的是, onSaveInstanceState()方法微信斗牛棋牌平台搭建 官网:h5.super-mans.com 企娥:2012035031 vx和tel:17061863513 微信斗牛棋牌平台搭建并不是一定会被调用的, 因为有些场景是不需要保存状态数据的. 比如用户按下BACK键退出activity时, 用户显然想要关闭这个activity, 此时是没有必要保存数据以供下次恢复的, 也就是onSaveInstanceState()方法不会被调用. 如果调用onSaveInstanceState()方法, 调用将发生在onPause()或onStop()方法之前.
onSaveInstanceState()方法的默认实现如果开发者没有覆写onSaveInstanceState()方法, 此方法的默认实现会自动保存activity中的某些状态数据, 比如activity中各种UI控件的状态. android应用框架中定义的几乎所有UI控件都恰当的实现了onSaveInstanceState()方法, 因此当activity被摧毁和重建时, 这些UI控件会自动保存和恢复状态数据. 比如EditText控件会自动保存和恢复输入的数据, 而CheckBox控件会自动保存和恢复选中状态. 开发者只需要为这些控件指定一个唯一的ID(通过设置android:id属性即可), 剩余的事情就可以自动完成了. 如果没有为控件指定ID, 则这个控件就不会进行自动的数据保存和恢复操作.由上所述, 如果开发者需要覆写onSaveInstanceState()方法, 一般会在第一行代码中调用该方法的默认实现: super.onSaveInstanceState(outState). 是否需要覆写onSaveInstanceState()方法既然该方法的默认实现可以自动的保存UI控件的状态数据, 那什么时候需要覆写该方法呢?如果需要保存额外的数据时, 就需要覆写onSaveInstanceState()方法. 如需要保存类中成员变量的值(见上例). onSaveInstanceState()方法适合保存什么数据由于onSaveInstanceState()方法方法不一定会被调用, 因此不适合在该方法中保存持久化数据, 例如向数据库中插入记录等. 保存持久化数据的操作应该放在onPause()中. onSaveInstanceState()方法只适合保存瞬态数据, 比如UI控件的状态, 成员变量的值等.
1 public class MainActivity extends Activity { 2 public static final int SECOND_ACTIVITY = 0; 3 private String temp; 4 5 @Override 6 public void onCreate(Bundle savedInstanceState) { 7 super.onCreate(savedInstanceState); 8 // 从savedInstanceState中恢复数据, 如果没有数据需要恢复savedInstanceState为null 9 if (savedInstanceState != null) { 10 temp = savedInstanceState.getString("temp"); 11 System.out.println("onCreate: temp = " + temp); 12 } 13 } 14 15 public void onResume() { 16 super.onResume(); 17 temp = "xing"; 18 System.out.println("onResume: temp = " + temp); 19 // 切换屏幕方向会导致activity的摧毁和重建 20 if (getRequestedOrientation() == ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED) { 21 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 22 System.out.println("屏幕切换"); 23 } 24 } 25 26 // 将数据保存到outState对象中, 该对象会在重建activity时传递给onCreate方法 27 @Override 28 protected void onSaveInstanceState(Bundle outState) { 29 super.onSaveInstanceState(outState); 30 outState.putString("temp", temp); 31 } 32 }
onSaveInstanceState()方法的默认实现如果开发者没有覆写onSaveInstanceState()方法, 此方法的默认实现会自动保存activity中的某些状态数据, 比如activity中各种UI控件的状态. android应用框架中定义的几乎所有UI控件都恰当的实现了onSaveInstanceState()方法, 因此当activity被摧毁和重建时, 这些UI控件会自动保存和恢复状态数据. 比如EditText控件会自动保存和恢复输入的数据, 而CheckBox控件会自动保存和恢复选中状态. 开发者只需要为这些控件指定一个唯一的ID(通过设置android:id属性即可), 剩余的事情就可以自动完成了. 如果没有为控件指定ID, 则这个控件就不会进行自动的数据保存和恢复操作.由上所述, 如果开发者需要覆写onSaveInstanceState()方法, 一般会在第一行代码中调用该方法的默认实现: super.onSaveInstanceState(outState). 是否需要覆写onSaveInstanceState()方法既然该方法的默认实现可以自动的保存UI控件的状态数据, 那什么时候需要覆写该方法呢?如果需要保存额外的数据时, 就需要覆写onSaveInstanceState()方法. 如需要保存类中成员变量的值(见上例). onSaveInstanceState()方法适合保存什么数据由于onSaveInstanceState()方法方法不一定会被调用, 因此不适合在该方法中保存持久化数据, 例如向数据库中插入记录等. 保存持久化数据的操作应该放在onPause()中. onSaveInstanceState()方法只适合保存瞬态数据, 比如UI控件的状态, 成员变量的值等.
相关文章推荐
- NFS应用场景及环境搭建——新手上路
- kafka入门:简介、使用场景、设计原理、主要配置及集群搭建
- kafka入门:简介、使用场景、设计原理、主要配置及集群搭建
- kafka入门:简介、使用场景、设计原理、主要配置及集群搭建
- threejs学习心得(场景的搭建+运动模型导入)
- kafka入门:简介、使用场景、设计原理、主要配置及集群搭建
- VR实训项目场景搭建阶段性报告
- 【译U3D】官方坦克3D游戏制作1-物体与场景搭建
- Unity.VR.03之360度场景背景搭建
- aframe.js只需要会HTML就能搭建VR场景和物体
- kafka入门:简介、使用场景、设计原理、主要配置及集群搭建
- NFS应用场景及环境搭建
- 阿里云Redis读写分离典型场景:如何轻松搭建电商秒杀系统
- SceneKit:简单的3D游戏场景搭建
- 阿里云Redis读写分离典型场景:如何轻松搭建电商秒杀系统
- kafka入门:简介、使用场景、设计原理、主要配置及集群搭建
- kafka入门:简介、使用场景、设计原理、主要配置及集群搭建
- kafka入门:简介、使用场景、设计原理、主要配置及集群搭建(转)
- kafka入门:简介、使用场景、设计原理、主要配置及集群搭建
- kafka入门:简介、使用场景、设计原理、主要配置及集群搭建(转)