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,""); } }