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