SharedPreferences数据存储
版本 | 修改内容 | 日期 | 修改人 |
V1.0 | 原始版本 | 2013/2/20 | skywang |
1 SharedPreferences概括
SharedPreferences是Android平台上一个轻量级的存储类,主要是保存一些常用的配置比如窗口状态,一般在Activity中 重载窗口状态onSaveInstanceState保存一般使用SharedPreferences完成,它提供了Android平台常规的Long长 整形、Int整形、String字符串型的保存。
它的本质是基于XML文件存储key-value键值对数据,通常用来存储一些简单的配置信息。
其存储位置在/data/data/<包名>/shared_prefs目录下。
SharedPreferences对象本身只能获取数据而不支持存储和修改,存储修改是通过SharedPreferences.Editor对象实现。
实现SharedPreferences存储的步骤如下:
一、根据Context获取SharedPreferences对象
二、利用edit()方法获取SharedPreferences.Editor对象。
三、通过SharedPreferences.Editor对象存储key-value键值对数据。
四、通过commit()方法提交数据。
2 SharedPreferences接口说明
3 示例代码
View Code
package com.yarin.Android.HelloAndroid; import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.content.SharedPreferences; import android.content.res.Resources; import java.util.Map; import java.util.Map.Entry; import java.util.Iterator; public class HelloAndroid extends Activity { private static final String TAG = "skywang-->HelloAndroid"; private static final String SP_FILE_NAME = "sp_test"; private static final String SP_CHI_NAME = "chi_name"; private static final String SP_ENG_NAME = "eng_name"; private static final String SP_AGE = "age"; private static final String SP_CHINESE = "chinese"; private SharedPreferences sp = null; private SharedPreferences.Editor editor = null; private SharedPreferences.OnSharedPreferenceChangeListener listener = new SharedPreferences.OnSharedPreferenceChangeListener() { public void onSharedPreferenceChanged(SharedPreferences sp, String key) { Log.d(TAG, "onSharedPreferenceChanged:key="+key); if (SP_CHI_NAME.equals(key)) Log.d(TAG, "onSharedPreferenceChanged:value="+sp.getString(key, null)); } }; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); sp = getSharedPreferences(SP_FILE_NAME, MODE_PRIVATE); // 监听 sp.registerOnSharedPreferenceChangeListener(listener); // 编辑并保存数据 editor = sp.edit(); editor.putString(SP_CHI_NAME, "kitty"); editor.putString(SP_ENG_NAME, "nick01"); editor.putString(SP_ENG_NAME, "nick02"); editor.putInt(SP_AGE, 11); editor.putBoolean(SP_CHINESE, true); editor.commit(); // 测试 Log.d(TAG, "chi_name="+sp.getString(SP_CHI_NAME, null)); Log.d(TAG, "eng_name="+sp.getString(SP_ENG_NAME, null)); Log.d(TAG, "contains(other_name)="+ sp.contains("other_name")); Log.d(TAG, "other_name="+sp.getString("other_name", "none")); // 测试getAll() 接口 Map<?,?> map = (Map<?,?>)sp.getAll(); Log.d(TAG, "map.size()="+map.size()); Iterator iterator=map.entrySet().iterator(); while(iterator.hasNext()){ Map.Entry<?, ?> entry= (Entry<?, ?>) iterator.next(); Log.d(TAG, "key:"+entry.getKey()+", value:"+entry.getValue()); } } @Override public void onDestroy() { super.onDestroy(); if (sp!=null) sp.unregisterOnSharedPreferenceChangeListener(listener); } }
参考文献:
1,Android API文档
2,Android实现数据存储技术:http://www.cnblogs.com/hanyonglu/archive/2012/03/01/2374894.html