SharedPreference 保存用户数据
前几章节我们学习的自己读写文件的方式,只是 Android 中最基本的保存数据的方式,这种方式保存数据需要自己确定数据的格式,要自己序列化和反序列化,用起来特麻烦
Android 提供了一个轻量级的存储类 SharedPreferences,使用 XML 格式保存一些键值对数据
当我们的应用想要保存用户的一些偏好参数,比如是否自动登陆,是否记住账号密码,是否在 Wifi 下才能
联网等相关信息,我们这些信息为用户的偏好
设置
SharedPreferences
SharedPreferences 可以看出是一个 Map<string,Object> 的别名,所以后者有的方法 SharedPreferences 实例都有
- 
首先实例化一个 SharedPreferences对象SharedPreferences sp = mContext.getSharedPreferences("filename", Context.MODE_PRIVATE);- 
mContext就是上下文,如果在Activity可以使用Activity.this或者getApplicationContext()方法获得
- 
filename就是要保存的文件名,不要加上.xml扩展名,因为系统自己会加上
- 
Context.MODE_PRIVATE就是在 Android 文件存储与读写 说的文件模式,一般都用Context.MODE_PRIVATE
 
- 
- 
调用 sp.edit()获取sp对象的写编辑器SharedPreferences.Editor editor = sp.edit(); 
- 
调用 editor.putXxxx()写数据操作 ,Xxx表示类型editor.putString("username","imyufei")
- 
调用 editor.commit()提交和保存数据
- 
调用 sp.getXxxx()去处Xxx类型的数据
- 
调用 sp.remove(key)可以删除key对应的数据
简单的封装
我们把上面所有的过程都封装到一个类中,取名叫 SharedHelper
package cn.twle.android.common; import android.content.Context; import android.content.SharedPreferences; import java.util.HashMap; import java.util.Map; public class SharedHelper { private Context mContext; public SharedHelper() { } public SharedHelper(Context mContext) { this.mContext = mContext; } //定义一个保存数据的方法 public void save(String key, String value) { SharedPreferences sp = mContext.getSharedPreferences("ms_sp", Context.MODE_PRIVATE); SharedPreferences.Editor editor = sp.edit(); editor.putString(key,value); editor.commit(); } //定义一个读取 SP 文件的方法 public String read(String key ) { Map<String, String> data = new HashMap<String, String>(); SharedPreferences sp = mContext.getSharedPreferences("ms_sp", Context.MODE_PRIVATE); return sp.getString(key,""); } }