android学习---Shared Preferences

1.使用Shared Preferences存储数据和读取数据

  Shared Preferences是Android系统提供的一个轻量级的存储类,主要用于保存一些配置信息,比如窗口状态(大小、亮度等)。

  Shared Preferences使用键值对的形式来存储数据,可以对常用数据类型boolean、float、int、long以及String进行保存。保存的数据以xml文件的形式存储在/data/data/<包名>/shared_prefs目录下。

1.1使用Shared Preferences存储数据

  使用Shared Preferences存储数据可以通过以下4个步骤来实现:(1)使用Context类提供的getSharedPreferences()方法,获取SharedPreferences对象。getSharedPreferences()方法的原型如下:

  public abstract SharedPreferences getSharedPreferences(String name, int mode);

  其中,参数name表示存储数据的文件名。有一点需要注意的是,此处只是定义了该文件名,该文件实际上并没有被创建,该文件只有当创建了SharedPreferences.Edit对象并使用该对象的commit()方法提交数据时,才会被创建。

  参数mode用于指定文件的操作模式,其可选值有Context.MODE_APPEND(内容追加模式)、Context.MODE_PRIVATE(默认操作模式)、Context.MODE_WORLD_READABLE(可读模式)、Context.MODE_WORLD_WRITEABLE(可写模式)四种。

  (2)使用SharedPreferences对象的edit()方法创建SharedPreferences.Edit对象。使用Shared Preferences方式存储数据时需要借助SharedPreferences.Edit类提供的方法来添加数据。SharedPreferences.Edit类提供的方法如图1所示。

图1 SharedPreferences.Edit类提供的方法

  可以看出,SharedPreferences.Edit类提供了以键值对的形式存储boolean、float、int、long以及String数据类型的数据的方法。

  (3)使用SharedPreferences.Edit对象存储数据。

  (4)使用commit()方法提交数据。

MySharedPreferences.java

package com.leaf.android;

import java.util.HashMap;
import java.util.Map;

import android.content.Context;
import android.content.SharedPreferences;

public class MySharedPreferences {

    private Context context;

    public MySharedPreferences(Context context) {
        this.context = context;
    }

    public boolean saveMessage(String name, String pswd) {
        boolean flag = false;
        SharedPreferences sharedPreferences = context.getSharedPreferences(
                "userinfo", Context.MODE_PRIVATE);
        // 对数据进行编辑
        SharedPreferences.Editor editor = sharedPreferences.edit();
        editor.putString("name", name);
        editor.putString("pswd", pswd);
        flag = editor.commit();// 将数据持久化到存储介质中
        return flag;
    }

    public Map<String, Object> getMessage() {
        Map<String, Object> map = new HashMap<String, Object>();// Map对象,用来存储读取到的数据
        SharedPreferences sharedPreferences = context.getSharedPreferences(
                "userinfo", Context.MODE_PRIVATE);
        String name = sharedPreferences.getString("name", " ");// 读取SharedPreferences对象中的数据
        String pswd = sharedPreferences.getString("pswd", " ");
        map.put("name", name);// 将读取到的数据存入Map对象
        map.put("pswd", pswd);
        return map;

    }
}

 

MyTest.java

package com.leaf.android;

import java.util.Map;

import android.content.Context;
import android.test.AndroidTestCase;
import android.util.Log;

public class MyTest extends AndroidTestCase {

    private String TAG = "MyTest";

    public MyTest() {
        // TODO Auto-generated constructor stub
    }

    public void save() {
        Context context = getContext();
        MySharedPreferences mySharedPreferences = new MySharedPreferences(
                context);
        boolean flag = mySharedPreferences.saveMessage("admin", "123");
        Log.i(TAG, "-->>" + flag);

    }

    public void find() {
        Context context = getContext();
        MySharedPreferences mySharedPreferences = new MySharedPreferences(
                context);
        Map<String, Object> map = mySharedPreferences.getMessage();
        Log.i(TAG, "-->>" + map.toString());

    }

}

 

在AndroidMainfest.xml文件中添加

    <instrumentation
        android:name="android.test.InstrumentationTestRunner"
        android:targetPackage="com.leaf.android" >
    </instrumentation>
        <uses-library android:name="android.test.runner" >
        </uses-library>

 

 

参考文献:http://www.cnblogs.com/menlsh/archive/2013/04/07/3006510.html

posted on 2013-09-09 20:45  leafu  阅读(338)  评论(0编辑  收藏  举报

导航