/***************************************************************************
* 封装sharedPreferences SettingsSPData
* 说明:
* 主要为了解决每次使用sharedPreferences的时候,都要操作很多次同样的操作,
* 于是将很多操作直接放到一起来, 图个省事,以后不用每次都去操作这些相同的操作。
*
* 2016-5-29 深圳 南山平山村 曾剑锋
**************************************************************************/ package com.android.gpiofuncctrl; import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry; import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.util.Log; public class SettingsSPData{ /**
* The name for default sharedPreferences file name.
*/
private final static String SETTING_SP = "SettingsSPData";
/**
* The mode for default sharePreferences file.
*/
private final static int SP_MODE = Context.MODE_PRIVATE;
/**
* The activity for convenient get sharePreferences at anywhere.
*/
private static Activity activity = null;
/**
* The tag for debug.
*/
private final static String TAG = "SettingsSPData"; public static void setActivity(Activity activity) {
if (activity == null) {
Log.d(TAG, "Setting Activity was null, please check this.");
return ;
}
SettingsSPData.activity = activity;
} public static Activity getActivity() {
return SettingsSPData.activity;
} public static SharedPreferences getSP(Activity activity, String name) {
return activity.getSharedPreferences(name, SP_MODE);
} public static SharedPreferences getSP(Activity activity) {
return getSP(activity, SETTING_SP);
} private static boolean checkObject(Object object) {
return (object != null);
} private static boolean checkString(String key) {
return (checkObject(key) && key.trim().length() != );
} private static boolean checkActivityAndString(Activity activity, String name){
return (checkObject(activity) && checkString(name));
} private static boolean checkActivityAndStrings(Activity activity, String name, String key) {
return (checkActivityAndOject(activity, name) && checkString(key));
} private static boolean checkActivityAndStrings(Activity activity, String name, String key, String value){
return (checkActivityAndStrings(activity, name, key) && checkString(value));
} private static boolean checkActivityAndOject(Activity activity, Object object){
return (checkObject(activity) && checkObject(object));
} public static String getString(Activity activity, String name, String key) {
if (checkActivityAndStrings(activity, name, key)) {
return getSP(activity, name).getString(key, "").trim();
}
return "";
} public static String getString(Activity activity, String key) {
return getString(activity, SETTING_SP, key);
} public static String getString(String key) {
return getString(activity, SETTING_SP, key);
} public static void pushString(Activity activity, String name, String key, String value) {
if (checkActivityAndStrings(activity, name, key, value)) {
getSP(activity, name).edit().putString(key, value.trim()).commit();
}
} public static void pushString(Activity activity, String key, String value) {
pushString(activity, SETTING_SP, key, value);
} public static void pushString(String key, String value) {
pushString(activity, SETTING_SP, key, value);
} public static int getInt(Activity activity, String name, String key) {
if (checkActivityAndStrings(activity, name, key)) {
return getSP(activity, name).getInt(key, );
}
return ;
} public static int getInt(Activity activity, String key) {
return getInt(activity, SETTING_SP, key);
} public static int getInt(String key) {
return getInt(activity, SETTING_SP, key);
} public static void pushInt(Activity activity, String name, String key, int value) {
if (checkActivityAndStrings(activity, name, key)) {
getSP(activity, name).edit().putInt(key, value).commit();
}
} public static void pushInt(Activity activity, String key, int value) {
pushInt(activity, SETTING_SP, key, value);
} public static void pushInt(String key, int value) {
pushInt(activity, SETTING_SP, key, value);
} public static float getFloat(Activity activity, String name, String key) {
if (checkActivityAndStrings(activity, name, key)) {
return getSP(activity, name).getFloat(key, );
}
return ;
} public static float getFloat(Activity activity, String key) {
return getFloat(activity, SETTING_SP, key);
} public static float getFloat(String key) {
return getFloat(activity, SETTING_SP, key);
} public static void pushFloat(Activity activity, String name, String key, float value) {
if (checkActivityAndStrings(activity, name, key)) {
getSP(activity, name).edit().putFloat(key, value).commit();
}
} public static void pushFloat(Activity activity, String key, float value) {
pushFloat(activity, SETTING_SP, key, value);
} public static void pushFloat(String key, float value) {
pushFloat(activity, SETTING_SP, key, value);
} public static long getLong(Activity activity, String name, String key) {
if (checkActivityAndStrings(activity, name, key)) {
return getSP(activity, name).getLong(key, );
}
return ;
} public static long getLong(Activity activity, String key) {
return getLong(activity, SETTING_SP, key);
} public static long getLong(String key) {
return getLong(activity, SETTING_SP, key);
} public static void pushLong(Activity activity, String name, String key, long value) {
if (checkActivityAndStrings(activity, name, key)) {
getSP(activity, name).edit().putLong(key, value).commit();
}
} public static void pushLong(Activity activity, String key, long value) {
pushLong(activity, SETTING_SP, key, value);
} public static void pushLong(String key, long value) {
pushLong(activity, SETTING_SP, key, value);
} public static boolean getBoolean(Activity activity, String name, String key) {
if (checkActivityAndStrings(activity, name, key)) {
return getSP(activity, name).getBoolean(key, false);
}
return false;
} public static boolean getBoolean(Activity activity, String key) {
return getBoolean(activity, SETTING_SP, key);
} public static boolean getBoolean(String key) {
return getBoolean(activity, SETTING_SP, key);
} public static void pushBoolean(Activity activity, String name, String key, boolean value) {
if (checkActivityAndStrings(activity, name, key)) {
getSP(activity, name).edit().putBoolean(key, value).commit();
}
} public static void pushBoolean(Activity activity, String key, boolean value) {
pushBoolean(activity, SETTING_SP, key, value);
} public static void pushBoolean(String key, boolean value) {
pushBoolean(activity, SETTING_SP, key, value);
} private static void pushToSP(Editor editor, String key, Object value) {
if (value instanceof String) {
editor.putString(key, ((String)value).trim());
} else if (value instanceof Integer) {
editor.putInt(key, (Integer)value);
} else if (value instanceof Float) {
editor.putFloat(key, (Float)value);
} else if (value instanceof Long) {
editor.putLong(key, (Long)value);
} else if (value instanceof Boolean) {
editor.putBoolean(key, (Boolean)value);
}
} public static void pushValue(Activity activity, String name, String key, Object value) {
if (checkActivityAndStrings(activity, name, key)) { Editor editor = getSP(activity, name).edit(); pushToSP(editor, key, value); editor.commit();
}
} public static void pushValue(Activity activity, String key, Object value) {
pushValue(activity, SETTING_SP, key, value);
} public static void pushValue(String key, Object value) {
pushValue(activity, SETTING_SP, key, value);
} public static void pushValues(Activity activity, String name, HashMap<String, Object> keyValues) {
if (checkActivityAndOject(activity, keyValues)) { Editor editor = getSP(activity, name).edit(); Iterator<Entry<String, Object>> iterator = keyValues.entrySet().iterator();
while (iterator.hasNext()) {
Map.Entry<String, Object> entry = (Map.Entry<String, Object>) iterator.next();
String key = (String)entry.getKey();
Object value = entry.getValue(); pushToSP(editor, key, value);
} editor.commit();
}
} public static void pushValues(Activity activity, HashMap<String, Object> keyValues) {
pushValues(activity, SETTING_SP, keyValues);
} public static void putValues(HashMap<String, Object> keyValues) {
pushValues(activity, SETTING_SP, keyValues);
} private static Object getFromSP(SharedPreferences sp, String key, Object type) {
Object value = null; if (type instanceof String) {
value = sp.getString(key, "").trim();
} else if (type instanceof Integer) {
value = sp.getInt(key, );
} else if (type instanceof Float) {
value = sp.getFloat(key, );
} else if (type instanceof Long) {
value = sp.getLong(key, );
} else if (type instanceof Boolean) {
value = sp.getBoolean(key, false);
} return value;
} public static Object getValue(Activity activity, String name, String key, Object type) {
if (checkActivityAndStrings(activity, name, key)) {
SharedPreferences sp = getSP(activity, name); return getFromSP(sp, key, type);
}
return null;
} public static Object getValue(Activity activity, String key, Object type) {
return getValue(activity, SETTING_SP, key, type);
} public static Object getValue(String key, Object type) {
return getValue(activity, SETTING_SP, key, type);
} public static HashMap<String, Object> getValues(Activity activity, String name, HashMap<String, Object> keyTypes) {
HashMap<String, Object> keyValues = new HashMap<String, Object>();
if (checkActivityAndString(activity, name)) {
SharedPreferences sp = getSP(activity, name); Iterator<Entry<String, Object>> iter = keyTypes.entrySet().iterator();
while (iter.hasNext()) {
Map.Entry<String, Object> entry = (Map.Entry<String, Object>) iter.next();
String key = (String)entry.getKey();
Object type = entry.getValue(); keyValues.put(key, getFromSP(sp, key, type));
} return keyValues;
}
return keyValues;
} public static HashMap<String, Object> getValues(Activity activity, HashMap<String, Object> keyTypes) {
return getValues(activity, SETTING_SP, keyTypes);
} public static HashMap<String, Object> getValues(HashMap<String, Object> keyTypes) {
return getValues(activity, SETTING_SP, keyTypes);
} public static void testSettingsSPData(Activity activity) { setActivity(activity); pushString("name", "zengjf");
Log.e("SettingsSPData", "name = " + (String)getValue("name", new String()));
pushInt("int", );
Log.e("SettingsSPData", "int = " + getValue("int", Integer.valueOf()));
pushFloat("float", 3.14f);
Log.e("SettingsSPData", "float = " + getValue("float", Float.valueOf())); HashMap<String, Object> keyvalues = new HashMap<String, Object>();
keyvalues.put("name", "zengsf");
keyvalues.put("address", "shenzhen");
keyvalues.put("float", 3.14f);
keyvalues.put("int", );
keyvalues.put("boolean", true); pushValues(activity, keyvalues); HashMap<String, Object> keyTypes = new HashMap<String, Object>();
keyTypes.put("name", new String());
keyTypes.put("address", new String());
keyTypes.put("float", Float.valueOf());
keyTypes.put("int", Integer.valueOf());
keyTypes.put("boolean", Boolean.valueOf(false)); Log.e(TAG, getValues(keyTypes).toString()); Log.e("SettingsSPData", "age = " + getValue("age", Integer.valueOf()));
Log.e("SettingsSPData", "int = " + getValue("int", Integer.valueOf()));
Log.e("SettingsSPData", "float = " + getValue("float", Float.valueOf()));
Log.e("SettingsSPData", "name = " + (String)getValue("name", new String())); /**
* output:
* E/SettingsSPData(8456): name = zengjf
* E/SettingsSPData(8456): int = 3
* E/SettingsSPData(8456): float = 3.14
* E/SettingsSPData(8456): {boolean=true, address=shenzhen, float=3.14, int=3, name=zengsf}
* E/SettingsSPData(8456): age = 0
* E/SettingsSPData(8456): int = 3
* E/SettingsSPData(8456): float = 3.14
* E/SettingsSPData(8633): name = zengsf
*/ }
}

封装sharedPreferences SettingsSPData的更多相关文章

  1. 细数 SharedPreferences 的那些槽点 !

    前言 最近在处理一个历史遗留项目的时候饱受其害,主要表现为偶发性的 SharedPreferences 配置文件数据错乱,甚至丢失.经过排查发现是多进程的问题.项目中有两个不同进程,且会频繁的读写 S ...

  2. 巧用第三方高速开发Android App 热门第三方SDK及框架

    巧用第三方高速开发Android App 热门第三方SDK及框架 历经大半年的时间,最终是把这门课程给录制出来了,也就在今天,正式在慕课网上上线了 项目地址:巧用第三方高速开发Android App ...

  3. 巧用第三方快速开发Android App 热门第三方SDK及框架

    巧用第三方快速开发Android App 热门第三方SDK及框架 历经大半年的时间,终于是把这门课程给录制出来了,也就在今天,正式在慕课网上上线了 项目地址:巧用第三方快速开发Android App ...

  4. Kotlin入门(25)共享参数模板

    共享参数SharedPreferences是Android最简单的数据存储方式,常用于存取“Key-Value”键值对数据.在使用共享参数之前,要先调用getSharedPreferences方法声明 ...

  5. Android开发之SharedPreferences的封装

    对于大部分初学者来说,如果想利用SharedPreferences进行数据存储的话大部分人(包括本人)应该会这样: 存储: SharedPreferences sharedPreferences = ...

  6. SharedPreferences的封装

    android.content.SharedPreferences是一个接口,用来获取和修改持久化存储的数据.有三种获取系统中保存的持久化数据的方式: 1). public SharedPrefere ...

  7. Android 工具类 SharedPreferences 封装

    SharedPreferences 是 Android 数据存储方式中的一种,特别适合用来存储少量的.格式简单的数据,比如应用程序的各种配置信息,如是否打开音效,是否开启震动等等. SharedPre ...

  8. 取代SharedPreferences的多进程解决方案

    Android的SharedPreferences用来存储一些键值对, 但是却不支持跨进程使用. 跨进程来用的话, 当然是放在数据库更可靠啦, 本文主要是给作者的新库PreferencesProvid ...

  9. android SharedPreferences 存储对象

    我们知道SharedPreferences只能保存简单类型的数据,例如,String.int等. 如果想用SharedPreferences存取更复杂的数据类型(类.图像等),就需要对这些数据进行编码 ...

随机推荐

  1. HYSBZ2038 小Z的袜子(莫队算法)

    今天学了一下传说中的解决离线询问不修改的一种算法.题目的意思非常简单,就是询问在一个[L,R]区间里的取两个物品,然后这两个物品颜色相同的概率.其实就是对于每种颜色i,这个区间里对应的个数cnt[i] ...

  2. 刘汝佳 算法竞赛-入门经典 第二部分 算法篇 第五章 3(Sorting/Searching)

    第一题:340 - Master-Mind Hints UVA:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Item ...

  3. 关闭WordPress自动加载的Open Sans字体-WP访问过慢原因

    序言 wordpress大概从wp-3.8开始会自动加载Open Sans字体,并引用Google上面的CSS样式.而最近谷歌经常打不开,导致网站访问速度过慢,严重的会拖慢几十秒.Open Sans字 ...

  4. 通过HTTP头控制浏览器的缓存

    通过HTTP头控制浏览器的缓存 浏览器缓存是提高用户体验和提升程序性能的一个很重要的途径,通过浏览器的缓存控制,可以对实时性要求不高的数据进行缓存,可以减少甚至不需要再次对服务器的请求就可以显示数据. ...

  5. Linux信号处理2

    引言 先看以下两个信号量: 13)SIGPIPE     当管道读端关闭,再往管道写东西,会发出SIGPIPE信号 17)SIGCHLD   子进程退出会向父进程发出SIGCHLD信号,系统默认处理是 ...

  6. 关于vmware下复制linux系统虚拟机后eth0变成eth1问题解决

    在vmware虚拟机中,当我们克隆或者复制linux系统虚拟机后,再启动系统时会发现系统下不再有eth0,而变成了eth1 当我们使用/etc/init.d/network restart重启网络时, ...

  7. Task 使用 Task以及Task.Factory都是在.Net 4引用的。Task跟Thread很类似,通过下面例子可以看到。

    static public void ThreadMain() { Thread t1 = new Thread(TaskWorker); t1.Start(3); } static public v ...

  8. lintcode:背包问题

    背包问题 在n个物品中挑选若干物品装入背包,最多能装多满?假设背包的大小为m,每个物品的大小为A[i] 样例 如果有4个物品[2, 3, 5, 7] 如果背包的大小为,可以选择的空间. 如果背包的大小 ...

  9. lintcode:装最多水的容器

    装最多水的容器 给定 n 个非负整数 a1, a2, ..., an, 每个数代表了坐标中的一个点 (i, ai).画 n 条垂直线,使得 i 垂直线的两个端点分别为(i, ai)和(i, 0).找到 ...

  10. How to configure Spring facet in IntelliJ IDEA

    遇到了这个问题,稀里糊涂的就给搞定了,在stackoverfolw上看到了相同的问题,直接拷贝下来吧 Spring Configuration Check Unmapped Spring config ...