黑马程序员技术交流社区
标题:
数据存取之Preference浅析
[打印本页]
作者:
woying123
时间:
2015-12-6 01:46
标题:
数据存取之Preference浅析
一.Preference的简介
Preference(配置)提供了一种轻量级的数据存取方法,主要应用于数据比较少的配置信息。它以“key-value”(是一个Map)对的方式将数据保存在一个XML配置文件中,例如,手机的开机问候语,可以将其以Preference方式来进行配置。也可以保存一些用户个性化设置的字体、颜色、位置等参数信息。
二.Preference存取数据的方法
使用到的接口:
SharedPreferences接口和SharedPreferences.Editor接口,它们都是来自于andorid.content包。
①SharedPreferences接口提供保存数据的方法
我们可以调用Context.getSharedPreferences(String name,int mode)方法得到SharedPreferences接口。该方法的第一个参数是文件名称,第二个参数是操作模式。操作模式有三种:
MODE_PRIVATE(私有)
MODE_WORLD_READABLE(可读)
MODE_WORLD_WRITEABLE(可写)
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值
②SharedPreferences.Editor接口提供获得数据的方法
SharedPreferences.Editor接口中的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.Editor接口常用的方法
方法名称
方法描述
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()方法提交内容。
MainActivity.java
package com.android.preference;
import android.app.Activity;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.widget.Button;
import android.widget.EditText;
public class MainActivity extends Activity {
private EditText myEditText;
private Button btn;
private static final String TEMP_INFO="temp_info";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
myEditText = (EditText)findViewById(R.id.EditText1);
btn = (Button)findViewById(R.id.Button1);
//获得SharedPreferences实例
SharedPreferences sp = getSharedPreferences(TEMP_INFO, MODE_WORLD_READABLE);
//从SharedPreferences获得备忘录的内容
String content = sp.getString("info_content", "");
//在EditText中显示备忘录内容
myEditText.setText(content);
}
@Override
protected void onStop() {
super.onStop();
//获得编辑器
SharedPreferences.Editor editor = getSharedPreferences(TEMP_INFO, MODE_WORLD_WRITEABLE).edit();
//将EditText中的文本内容添加到编辑器
editor.putString("info_content", myEditText.getText().toString());
//提交编辑器内容
editor.commit();
}
}
main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="备忘录"
/>
<EditText
android:text=""
android:id="@+id/EditText1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<Button
android:id="@+id/Button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="保存"
/>
</LinearLayout>
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2