Android中SharedPreferences的使用

时间:2021-12-26 16:42:04

一、SharedPreferences简介

Android提供了多种存储方式,其中就包括了非常常用的SharedPreferences。SharedPreferences是一种轻量级的存储机制,无论是存数据和取数据都十分快速,而其的局限性也就是在“轻量”两个字当中。SharedPreferences中存储的数据格式简单,数据量少,而且SharedPreferences得数据存储于本地,所以共享性很低。

二、SharedPreferences的存储路径

1、SharedPreferences作为一种本地存储方式,不具备共享性。但是,多个程序之间可以互相读取SharedPreferences的数据。

2、SharedPreferences的存储路径为:data/data/packageName/shared_prefs目录下,以.xml的形式存储。

三、SharedPreferences的相关初始化的存储方式

SharedPreferences存储数据时,是以键值对的形式存取的。

1、初始化SharedPreferences

private SharedPreferences sharedPreferences;
sharedPreferences = getSharedPreferences("sharedPreferencesName", Context.MODE_PRIVATE);

2、初始化编辑器

SharedPreferences.Editor editor = sharedPreferences.edit();

3、保存(提交)数据

editor.putBoolean("booleanName", false);//Boolean类型的数据,booleanName为键名,false为键值。(下文同理)
editor.putFloat("floatName", 0.1f); //float类型
editor.putInt("intName", 1); //int类型
editor.putLong("longName", 1); //long类型
editor.putString("stringName", "test") //String类型
editor.commit(); //提交(保存)数据

4、获取数据

sharedPreferences.getBoolean("booleanName", false);
sharedPreferences.getFloat("floatName", 0);
sharedPreferences.getInt("intName", 0);
sharedPreferences.getLong("longName", 0);
sharedPreferences.getString("stringName", "");

5、删除数据

(1)删除单条数据

editor.remove("booleanName");
editor.remove("floatName");
editor.remove("intName");
editor.remove("longName");
editor.remove("stringName");

 

(2)清除所有数据

editor.clear().commit();
 

6、删除SharedPreferences

File file = new File("/data/data/" + getPackageName()
+ "/shared_prefs", "sharedPreferencesName");
if (file.exists()) {
file.delete();
}

四、SharedPreferences的工具类编写

package com.jyy.CSDN;

import android.content.Context;
import android.content.SharedPreferences;

import java.io.File;
import java.util.Map;

/**
* Author: JiangYY
* Date: 2016/5/12 20:02
* Describle: TODO SharePreference的工具类:对SharePreference的操作进行统一管理,下文中,声明了几个常用操作,其他的同理可得。
*/
public class SharePreferenceHelper {

private Context context;
private final String sharePreferencePath = "/data/data/" + context.getPackageName()
+ "/shared_prefs";

private String testsharePreferenceName = "testsharePreference"; //测试用的SharePreference
private String testKey = "testKey"; //测试字段

public SharePreferenceHelper(Context context) {
this.context = context;
}

/**
* 新建SharePreference
*
* @param fileName 所添加的SharePreference的文件名
* @param map 所添加的数据集合
* @return
*/
private boolean saveSharePreference(String fileName, Map<String, Object> map) {
SharedPreferences sharedPreferences = context.getSharedPreferences(fileName, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
for (Map.Entry<String, Object> entry : map.entrySet()) {
String key = entry.getKey();
Object object = entry.getValue();
if (object instanceof String) {
editor.putString(key, (String) object);
}
if (object instanceof Integer) {
editor.putInt(key, (Integer) object);
}
if (object instanceof Float) {
editor.putFloat(key, (Float) object);
}
if (object instanceof Long) {
editor.putLong(key, (Long) object);
}
if (object instanceof Boolean) {
editor.putBoolean(key, (Boolean) object);
}
}
editor.commit();
return true;
}

/**
* 清除SharedPreferences中所有数据
*
* @param fileName 被清除数据的SharedPreferences文件名
*/
private void clearSharedPreferences(String fileName) {
SharedPreferences preferences = context.getSharedPreferences(fileName, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
editor.clear().commit();
}

/**
* 删除SharePreference文件
*
* @param fileName 被删除SharePreference的文件名
*/
private void deleteSharedPreferences(String fileName) {
File file = new File(sharePreferencePath, fileName);
if (file.exists()) {
file.delete();
}
}

/**
* 测试SharePreference中,假设字段确定
*
* @param data 待存储的数据
* @return
*/
private boolean saveTestData(String data) {
SharedPreferences sharedPreferences = context.getSharedPreferences(testsharePreferenceName, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString(testKey, data);
editor.commit();
}

/**
* 删除测试SharedPreferences中指定字段数据
*
* @param keyName 字段名
*/
private void deleteTestData(String keyName) {
SharedPreferences sharedPreferences = context.getSharedPreferences(testsharePreferenceName, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.remove(keyName);
}

}