玩转Andorid---组件篇---数据存储之preference
2015-07-29 12:34
477 查看
原址:http://hualang.iteye.com/category/143855
程序是数据的输入、处理和输出的过程,不管是操作系统还是应用程序都是不可避免的要用到大量的数据。由于内存容量有限,且不能长期保存数据,因此一般把它们以文件的形式保存在磁盘等存储介质中。操作系统一般是以文件的形式来保存数据的,而应用程序一般以数据库来保存数据。
在手机这种特殊设备里,也经常会存取一些数据。例如,音频文件,视频文件、图片文件和通信录等数据。Andorid作为一种手机操作系统,提供了如下几种存取数据的方式:Preference(配置)、File(文件)、SQLite数据和网络,可以根据程序的实际需要选择合适的存取方式。
另外,在Android中各个应用程序组件之间是相互独立的,彼此的数据不能共享。为了实现数据的共享,Andorid提供了Content Provider组件来实现程序指间的数据共享。
Preference提供了一种轻量级的数据存取方法,应用场合主要是数据比较少的配置信息。它以“键-值”(是一个Map)对的方式将数据保存在一个XML配置文件中,例如,我们设置了一个手机的开机问候语,可以将其以Preference方式来进行配置。
Preference简介:
使用Preference方式来存取数据,用到了SharedPreferences接口和SharedPreferences的一个内部接口SharedPreferences.Editor,这两个接口在andorid.content包中。
调用Context.getSharedPreferences(String name,int mode)方法得到SharedPreferences接口。该方法的第一个参数是文件名称,第二个参数是操作模式。操作模式有三种:
MODE_PRIVATE(私有)
MODE_WORLD_READABLE(可读)
MODE_WORLD_WRITEABLE(可写)
SharedPreferences提供了获取数据的方法,如getString(String key,String defValue)、getInt(String key,int defValue)等。调用SharedPreferences的edit()方法返回SharedPreferences.Editor内部接口,该接口中提供了保存数据的方法,如putString(String key,String value)、pubInt(String key,int value)等,调用该接口的commit方法可以将数据进行保存。SharedPreferences和SharedPreferences.Editor的常用方法如下:
SharedPreferences的常用方法
SharedPreferences.Editor
下面是个小例子:
说明:
我们经常会有这样的经历,当我们在编辑短信的时候,突然来了一个电话。我们停止发送短信,去打电话,那么,当我们打完电话回来,我们编辑了一半的短信内容应该还在才对,这里我们就用Preference来保存临时短信内容
创建一个Activity,在其中放置一个EditText保存短信内容,放置一个Button用于发送信息。在onCreate()中通过getSharedPreferences()方法获得SharedPreferences接口,调用接口的getString()方法,获得保存内容,将内容设置到EditText中。
在onStop()方法中保存内容,使用getSharedPreferences().edit()方法获得SharedPreferences.Editor接口,调用SharedPreferences.Editor的putString()方法保存短信内容,调用commit()方法提交内容。
Java代码
package org.hualang.preference;
import android.app.Activity;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.widget.Button;
import android.widget.EditText;
public class PreferenceTest extends Activity {
/** Called when the activity is first created. */
private EditText edit;
private Button btn;
private static final String TEMP_SMS="temp_sms";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
edit=(EditText)findViewById(R.id.myedit);
btn=(Button)findViewById(R.id.mybutton);
SharedPreferences pre=getSharedPreferences(TEMP_SMS,MODE_WORLD_READABLE);
String content=pre.getString("sms_content","");
edit.setText(content);
}
protected void onStop()
{
super.onStop();
SharedPreferences.Editor editor=getSharedPreferences(TEMP_SMS,MODE_WORLD_WRITEABLE).edit();
editor.putString("sms_content", edit.getText().toString());
editor.commit();
}
}
运行结果:
当编辑了一些内容后,会出屏幕再返回,发现原来编辑了一半的内容还在那里,其实它是把要保存的内容做诶XML文件保存在/data/data/package/shsared_prefs/下面了,如下:
到处这个文件,并且打开后,结果是这样的
Java代码
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
<string name="sms_content">红酥手,黄滕酒。满城春色宫强流</string>
</map>
程序是数据的输入、处理和输出的过程,不管是操作系统还是应用程序都是不可避免的要用到大量的数据。由于内存容量有限,且不能长期保存数据,因此一般把它们以文件的形式保存在磁盘等存储介质中。操作系统一般是以文件的形式来保存数据的,而应用程序一般以数据库来保存数据。
在手机这种特殊设备里,也经常会存取一些数据。例如,音频文件,视频文件、图片文件和通信录等数据。Andorid作为一种手机操作系统,提供了如下几种存取数据的方式:Preference(配置)、File(文件)、SQLite数据和网络,可以根据程序的实际需要选择合适的存取方式。
另外,在Android中各个应用程序组件之间是相互独立的,彼此的数据不能共享。为了实现数据的共享,Andorid提供了Content Provider组件来实现程序指间的数据共享。
Preference提供了一种轻量级的数据存取方法,应用场合主要是数据比较少的配置信息。它以“键-值”(是一个Map)对的方式将数据保存在一个XML配置文件中,例如,我们设置了一个手机的开机问候语,可以将其以Preference方式来进行配置。
Preference简介:
使用Preference方式来存取数据,用到了SharedPreferences接口和SharedPreferences的一个内部接口SharedPreferences.Editor,这两个接口在andorid.content包中。
调用Context.getSharedPreferences(String name,int mode)方法得到SharedPreferences接口。该方法的第一个参数是文件名称,第二个参数是操作模式。操作模式有三种:
MODE_PRIVATE(私有)
MODE_WORLD_READABLE(可读)
MODE_WORLD_WRITEABLE(可写)
SharedPreferences提供了获取数据的方法,如getString(String key,String defValue)、getInt(String key,int defValue)等。调用SharedPreferences的edit()方法返回SharedPreferences.Editor内部接口,该接口中提供了保存数据的方法,如putString(String key,String value)、pubInt(String key,int value)等,调用该接口的commit方法可以将数据进行保存。SharedPreferences和SharedPreferences.Editor的常用方法如下:
SharedPreferences的常用方法
方法名称 | 方法描述 |
edit() | 返回SharedPreferences的内部接口SharedPreferences.Editor |
contains(String key) | 判断是否包含该键值 |
getAll() | 返回所有配置信息Map |
getBoolean(String key,Boolean defValue) | 获得一个boolean值 |
getFloat(String key,float defValue) | 获得一个float值 |
getInt(String key,int defValue) | 获得一个int值 |
getLong(String key,long defValue) | 获得一个long值 |
getString(String key,String defValue) | 获得一个String值 |
方法名称 | 方法描述 |
clear() | 清楚所有值 |
commit() | 保存 |
getAll() | 返回所有配置信息Map |
putBoolean(String key,Boolean value) | 保存一个boolean值 |
putFloat(String key,float value) | 保存一个float值 |
putInt(String key,int value) | 保存一个int值 |
putLong(String key,long value) | 保存一个long值 |
putString(String key,String value) | 保存一个String值 |
remove(String key) | 删除该键对应的键 |
说明:
我们经常会有这样的经历,当我们在编辑短信的时候,突然来了一个电话。我们停止发送短信,去打电话,那么,当我们打完电话回来,我们编辑了一半的短信内容应该还在才对,这里我们就用Preference来保存临时短信内容
创建一个Activity,在其中放置一个EditText保存短信内容,放置一个Button用于发送信息。在onCreate()中通过getSharedPreferences()方法获得SharedPreferences接口,调用接口的getString()方法,获得保存内容,将内容设置到EditText中。
在onStop()方法中保存内容,使用getSharedPreferences().edit()方法获得SharedPreferences.Editor接口,调用SharedPreferences.Editor的putString()方法保存短信内容,调用commit()方法提交内容。
Java代码
package org.hualang.preference;
import android.app.Activity;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.widget.Button;
import android.widget.EditText;
public class PreferenceTest extends Activity {
/** Called when the activity is first created. */
private EditText edit;
private Button btn;
private static final String TEMP_SMS="temp_sms";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
edit=(EditText)findViewById(R.id.myedit);
btn=(Button)findViewById(R.id.mybutton);
SharedPreferences pre=getSharedPreferences(TEMP_SMS,MODE_WORLD_READABLE);
String content=pre.getString("sms_content","");
edit.setText(content);
}
protected void onStop()
{
super.onStop();
SharedPreferences.Editor editor=getSharedPreferences(TEMP_SMS,MODE_WORLD_WRITEABLE).edit();
editor.putString("sms_content", edit.getText().toString());
editor.commit();
}
}
运行结果:
当编辑了一些内容后,会出屏幕再返回,发现原来编辑了一半的内容还在那里,其实它是把要保存的内容做诶XML文件保存在/data/data/package/shsared_prefs/下面了,如下:
到处这个文件,并且打开后,结果是这样的
Java代码
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
<string name="sms_content">红酥手,黄滕酒。满城春色宫强流</string>
</map>
相关文章推荐
- 解决This function or variable may be unsafe
- 去除inline-block元素间间距的N种方法
- 使用 jQuery.i18n.properties 实现 Web 前端的国际化
- Jquery结合datagrid框架
- js Unicode编码转换
- dp poj1948 Triangular Pastures
- [JQuery] jquery.fn.extend 与 jquery.extend
- node批量下载图片
- CSS常用属性
- 详解JavaScript的Polymer框架中的通知交互
- html5之使用web存储
- JavaScript的Polymer框架中dom-repeat与VM的相关操作
- 深入掌握JMS(一):JSM基础
- javascript个人代码备份2015-07-29
- jsp 基础知识之指令元素
- js实现图片轮播
- 【jetty】jetty作为maven插件,解除JS/CSS等静态文件锁定
- 浅谈JavaScript的Polymer框架中的事件绑定
- CSS布局页面之盒子模型
- 探讨JavaScript中的Rest参数和参数默认值