SharedPreferences的使用与封装
2018-08-13 本文已影响0人
大马猴2333
SharedPreferences的介绍
SharedPreferences:中文翻译为共享首选项,一个轻量级的存储类,能够保存和检索原始数据类型的永久性键值对,可以保存任何原始数据:布尔值、浮点值、整型值、长整型和字符串,特别适合用于保存软件配置参数。(是用xml文件存放数据,文件存放在/data/data//shared_prefs目录下)
SharedPreferences的使用
1,在Activity类中可以直接使用getSharedPreferences的方法获取SharedPreferences的对象
SharedPreferences getSharedPreferences(String name, int mode)
参数
name:命名
mode:模式
其中包括:
MODE_PRIVATE,//默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容,如果想把新写入的内容追加到原文件中,可以使用Activity.MODE_APPEND
MODE_WORLD_READABLE,//表示当前文件可以被其他应用读取,
MODE_WORLD_WRITEABLE,//表示当前文件可以被其他应用写入;
//如果希望文件被其他应用读和写,可以传入:MODE_WORLD_READABLE+Activity.MODE_WORLD_WRITEABLE
MODE_APPEND//该模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件
若不在Activity类中可以使用
context.getSharedPreferences(String name, int mode)
2,使用SharedPreferences接口的edit获得SharedPreferences.Editor对象。
SharedPreferences settings = getSharedPreferences(PREFS_NAME, Activity.MODE_PRIVATE);
SharedPreferences.Editor editor = settings.edit();
3,通过SharedPreferences.Editor接口的putXxx方法保存key-value对。其中Xxx表示不同的数据类型。例如:字符串类型的value需要用putString方法。
editor.putString("userId","2333");
4,通过SharedPreferences.Editor接口的commit方法保存key-value对。commit方法相当于数据库事务中的提交(commit)操作。
editor.commit();
5,通过SharedPreferences对象的getXXX方法获取数据。例如:获取字符串类型的value需要用getString方法。(参数1:对应获取的key,参数2:当读取不到指定的数据时,使用的默认值defValue)
String userId = settings.getString("userId","defValue");
6,清除数据
//清除单个数据
editor.remove("userId").commit();
//清除所有数据
editor.clear().commit();
SharedPreferences的封装
SharedPreferences在日常开发中经常使用到,我们需要简单封装下在任何地方使用很方便
封装:PrefManager
package com.ldl.spdemo;
import android.content.SharedPreferences;
/**
* Created by Administrator on 2018/8/13 0013.
*/
public class PrefManager {
private static final String FILENAME = "_filename_social_";
private volatile static PrefManager instance = null;
//采用单利模式
public static PrefManager instance() {
if (instance == null) {
synchronized (PrefManager.class) {
if (instance == null) {
instance = new PrefManager();
instance.init();
}
}
}
return instance;
}
private SharedPreferences sp = null;
// 初始化 App.getContext():全局Context也就是Application
private void init() {
sp = App.getContext().getSharedPreferences(FILENAME, 0);
}
private static final String KEY_USER_ID = "user_id";
private static final String KEY_USER_TOKEN = "user_token";
/**
* 获取上次登录成功的用户SkyId
*
* @return
*/
public String getUserId() {
return sp.getString(KEY_USER_ID, "");
}
/**
* 设置最新的登录成功skyId
*
* @param skyId
*/
public void setUserId(String skyId) {
sp.edit().putString(KEY_USER_ID, skyId).commit();
}
/**
* 获取登录成功的用户token
*
* @return
*/
public String getToken() {
return sp.getString(KEY_USER_TOKEN, "");
}
/**
* 设置最新的登录成功token
*
* @param token
*/
public void setToken(String token) {
sp.edit().putString(KEY_USER_TOKEN, token).commit();
}
/**
* 清空所有设置
*/
public void clear() {
sp.edit().clear().commit();
}
/**
* 清空单个数据
* @param key
*/
public void remove(String key){
sp.edit().remove(key).commit();
}
}
使用
package com.ldl.spdemo;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//设置数据
PrefManager.instance().setUserId("123456789");
PrefManager.instance().setToken("987654321");
//获取数据
PrefManager.instance().getUserId();
PrefManager.instance().getToken();
}
}
大马猴.jpg