工具类之SPUtils

此工具类不是网上大家用烂的那一份,是博主亲自编写,亲自测试,代码简洁清晰,可满足日常开发,不再是采用效率低下的commit来提交,而是apply,至于两者有何不同,大家可以自行search。
Talk is cheap, show me ur code.下面上方法列表和具体代码,开车喽,呜~~

  • SP相关→SPUtils.java→Test
getInstance: 获取SP实例
put        : SP中写入数据
getString  : SP中读取String
getInt     : SP中读取int
getLong    : SP中读取long
getFloat   : SP中读取float
getBoolean : SP中读取boolean
getAll     : SP中获取所有键值对
remove     : SP中移除该key
contains   : SP中是否存在该key
clear      : SP中清除所有数据

import android.content.Context;
import android.content.SharedPreferences;
import android.support.annotation.NonNull;

import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;

/**
 * 
 *     author: Blankj
 *     blog  : http://blankj.com
 *     time  : 2016/08/02
 *     desc  : SP相关工具类
 * 
*/ public class SPUtils { private static Map sSPMap = new HashMap<>(); private SharedPreferences sp; /** * 获取SP实例 * * @return {@link SPUtils} */ public static SPUtils getInstance() { return getInstance(""); } /** * 获取SP实例 * * @param spName sp名 * @return {@link SPUtils} */ public static SPUtils getInstance(String spName) { if (isSpace(spName)) spName = "spUtils"; SPUtils sp = sSPMap.get(spName); if (sp == null) { sp = new SPUtils(spName); sSPMap.put(spName, sp); } return sp; } private SPUtils(String spName) { sp = Utils.getContext().getSharedPreferences(spName, Context.MODE_PRIVATE); } /** * SP中写入String * * @param key 键 * @param value 值 */ public void put(@NonNull String key, @NonNull String value) { sp.edit().putString(key, value).apply(); } /** * SP中读取String * * @param key 键 * @return 存在返回对应值,不存在返回默认值{@code null} */ public String getString(@NonNull String key) { return getString(key, ""); } /** * SP中读取String * * @param key 键 * @param defaultValue 默认值 * @return 存在返回对应值,不存在返回默认值{@code defaultValue} */ public String getString(@NonNull String key, @NonNull String defaultValue) { return sp.getString(key, defaultValue); } /** * SP中写入int * * @param key 键 * @param value 值 */ public void put(@NonNull String key, int value) { sp.edit().putInt(key, value).apply(); } /** * SP中读取int * * @param key 键 * @return 存在返回对应值,不存在返回默认值-1 */ public int getInt(@NonNull String key) { return getInt(key, -1); } /** * SP中读取int * * @param key 键 * @param defaultValue 默认值 * @return 存在返回对应值,不存在返回默认值{@code defaultValue} */ public int getInt(@NonNull String key, int defaultValue) { return sp.getInt(key, defaultValue); } /** * SP中写入long * * @param key 键 * @param value 值 */ public void put(@NonNull String key, long value) { sp.edit().putLong(key, value).apply(); } /** * SP中读取long * * @param key 键 * @return 存在返回对应值,不存在返回默认值-1 */ public long getLong(@NonNull String key) { return getLong(key, -1L); } /** * SP中读取long * * @param key 键 * @param defaultValue 默认值 * @return 存在返回对应值,不存在返回默认值{@code defaultValue} */ public long getLong(@NonNull String key, long defaultValue) { return sp.getLong(key, defaultValue); } /** * SP中写入float * * @param key 键 * @param value 值 */ public void put(@NonNull String key, float value) { sp.edit().putFloat(key, value).apply(); } /** * SP中读取float * * @param key 键 * @return 存在返回对应值,不存在返回默认值-1 */ public float getFloat(@NonNull String key) { return getFloat(key, -1f); } /** * SP中读取float * * @param key 键 * @param defaultValue 默认值 * @return 存在返回对应值,不存在返回默认值{@code defaultValue} */ public float getFloat(@NonNull String key, float defaultValue) { return sp.getFloat(key, defaultValue); } /** * SP中写入boolean * * @param key 键 * @param value 值 */ public void put(@NonNull String key, boolean value) { sp.edit().putBoolean(key, value).apply(); } /** * SP中读取boolean * * @param key 键 * @return 存在返回对应值,不存在返回默认值{@code false} */ public boolean getBoolean(@NonNull String key) { return getBoolean(key, false); } /** * SP中读取boolean * * @param key 键 * @param defaultValue 默认值 * @return 存在返回对应值,不存在返回默认值{@code defaultValue} */ public boolean getBoolean(@NonNull String key, boolean defaultValue) { return sp.getBoolean(key, defaultValue); } /** * SP中写入String集合 * * @param key 键 * @param values 值 */ public void put(@NonNull String key, @NonNull Set values) { sp.edit().putStringSet(key, values).apply(); } /** * SP中读取StringSet * * @param key 键 * @return 存在返回对应值,不存在返回默认值{@code null} */ public Set getStringSet(@NonNull String key) { return getStringSet(key, Collections.emptySet()); } /** * SP中读取StringSet * * @param key 键 * @param defaultValue 默认值 * @return 存在返回对应值,不存在返回默认值{@code defaultValue} */ public Set getStringSet(@NonNull String key, @NonNull Set defaultValue) { return sp.getStringSet(key, defaultValue); } /** * SP中获取所有键值对 * * @return Map对象 */ public Map getAll() { return sp.getAll(); } /** * SP中移除该key * * @param key 键 */ public void remove(@NonNull String key) { sp.edit().remove(key).apply(); } /** * SP中是否存在该key * * @param key 键 * @return {@code true}: 存在
{@code false}: 不存在 */ public boolean contains(@NonNull String key) { return sp.contains(key); } /** * SP中清除所有数据 */ public void clear() { sp.edit().clear().apply(); } private static boolean isSpace(String s) { if (s == null) return true; for (int i = 0, len = s.length(); i < len; ++i) { if (!Character.isWhitespace(s.charAt(i))) { return false; } } return true; } }

如果该工具类依赖其他工具类,都可以在我的Android开发人员不得不收集的代码(持续更新中)中找到。

你可能感兴趣的:(工具类之SPUtils)