【Android 开发教程】保存状态等信息
来源:互联网 发布:淘宝不用一口价 编辑:程序博客网 时间:2024/04/29 18:34
本章节翻译自《Beginning-Android-4-Application-Development》,如有翻译不当的地方,敬请指出。
原书购买地址http://www.amazon.com/Beginning-Android-4-Application-Development/dp/1118199545/目前为止,我们已经了解到了,当改变屏幕方向的时候,activity将会被销毁,随后被重建。请记住一点,当activity被重建之后,它的当前信息可能消失。当一个activity被kill掉,将会调以下方法中的一个或着两个:
- onPause() —— 当一个activity被kill掉或被转入后台的时候,这个方法总是被调用。
- onSaveInstanceState() —— 当一个activity将被kill掉或转入后台的时候,这个方法也会被掉用,就像onPause()方法一样。但是,当一个activity从调用栈中清除的时候(例如按返回键的时候),这个方法不会被调用(注:onPause()方法会被调用),因为已经没有必要保存它的状态了。
简而言之,想要保存activity的状态,那么总是要实现onPause()方法,然后使用你自己的方法去保存状态信息,例如使用数据库,外部或内部的存储。
如果你想简单地保存状态信息,当activity在重新创建的时候,从新加载这些信息。一个简单的方法就是实现onSaveInstanceState()这个方法,因为它提供了一个Bundle对象作为参数,这样,就可以使用这个Bundle对象去保存activity的信息。下面的代码将展示如何使用onSaveInstanceState()方法:
- @Override
- public void onSaveInstanceState(Bundle outState) {
- //---save whatever you need to persist---
- outState.putString("ID", "1234567890");
- super.onSaveInstanceState(outState);
- }
- @Override
- public void onRestoreInstanceState(Bundle savedInstanceState) {
- super.onRestoreInstanceState(savedInstanceState);
- //---retrieve the information persisted earlier---
- String ID = savedInstanceState.getString("ID");
- }
可以使用的另外一种方法是使用onRetainNonConfigurationInstance()回调方法。当一个activity因为配置更改(例如屏幕方向的改变)而奖杯销毁的时候,Android系统将调用这个方法。可以这么使用:
- @Override
- public Object onRetainNonConfigurationInstance() {
- //---save whatever you want here; it takes in an Object type---
- return("Some text to preserve");
- }
可以观察到,这个方法返回一个Object对象,这就允许你返回任何数据类型。如果要提取保存的数据,可以在onCreate()方法中进行提取,使用getLastNonConfigurationInstance()回调方法:
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- Log.d("StateInfo", "onCreate");
- String str = (String) getLastNonConfigurationInstance();
- }
例如,当用户下载数据的同时改变了屏幕方法,使用这两个方法去保存数据,总好过重新下载数据吧。
- 【Android 开发教程】保存状态等信息
- Android Fragment 保存页面信息以及状态
- Android开发之文件下载(通知栏中显示进度条,状态信息等)
- Android Swich的基本用法,保存状态等
- Android 保存 用户名和密码 设置等应用信息优化
- android开发 全屏 隐藏电池等信息
- Android 状态保存
- android 状态保存
- Android 应用保存状态
- Android-Activity状态保存
- Android-Activity状态保存
- android activity保存状态
- Android --Activity保存状态
- Android View状态保存
- android 状态保存onSaveInstanceState
- Android Activity状态保存
- drbd 状态 角色 等信息
- 【Android 应用开发】Activity 状态保存 OnSaveInstanceState参数解析
- Android之Gallery的两种使用方法
- linux下 mysql字符集的修改
- 12 个有效的提高编程技能的方法
- tomcat url中文参数问题
- 【Android 开发教程】触发事件
- 【Android 开发教程】保存状态等信息
- VC使用ADO连接SQLServer数据库
- 【Android 开发教程】检测屏幕的方向
- 【Android 开发教程】设置Activity的方向
- 关于键盘模拟的介绍
- log4j使用快速入门
- 链表逆序
- Struts2乱码解决方案
- CSDN-----解决坛友问题之指定字符串显示到DataGridview