/***************************************************************************
* 封装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. **关于PHP如何定义一个空对象(REST API如何处理空对象和空数组)

    在写接口的过程当中,手机端有需求说不让返回json数组,要返回一个对象. 那么我们可以怎么做呢? 其实很简单,强制转换即可. 声明空对象: $empty_object=(object)array(); ...

  2. UVA 12373 Pair of Touching Circles

    思路:(注意2个圆的半径可以不一样) 有2种情况: 1) 水平和竖直放.这种情况很简单,刚开始以为只有这种情况,但是样例5不对,后来知道还有一种情况. 2)斜线也可以放.只要满足勾股数就可以.现在的问 ...

  3. 10 signs you’re dating the wrong person

    10 signs you’re dating the wrong person10个迹象表明TA不是你的真心人       Do you have any exes who were so awful ...

  4. 一个tomcat上放多个webapp问题,那这多个webapp会不会竞争端口呢?不会!安全两码事

    1.一个tomcat上放多个webapp问题,那这多个webapp会不会竞争端口呢?不会!安全两码事

  5. 对QT的理解——能在公司里不做Java,不做很偏门的产品,不使用偏门的语言,还有钱挣,要有感恩的心

    我的理解: QT做应用软件可以很强大,界面足够漂亮(最有意思的是QSS,让我刮目相看),应该是足够了.同时QT也提供了源码,不过超级复杂,难以理解,所以还是无法深入底层.另外它提供了一个额外的好处,就 ...

  6. Knight's Trip---hdu3766(马走日求最小走的步数)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3766 给你一个x ,y 求出从(0,0)位置到达需要的最小步数每次只能走日型: 下图为暴力bfs得到的 ...

  7. ubuntu sh脚本双击运行

    自从13.04以后,双击sh脚本文件就已经默认是geidt打开了,要想运行,从nautilus-->文件-->首选项-->行为-->可执行文件 有三个选项,默认是第二个,如果想 ...

  8. 280. Wiggle Sort

    题目: Given an unsorted array nums, reorder it in-place such that nums[0] <= nums[1] >= nums[2] ...

  9. MyBatis学习总结_02_使用MyBatis对表执行CRUD操作

    一.使用MyBatis对表执行CRUD操作——基于XML的实现 1.定义sql映射xml文件 userMapper.xml文件的内容如下: 1 <?xml version="1.0&q ...

  10. 《MySQL悲观锁总结和实践》乐观锁

    mysql乐观锁总结和实践 博客分类: MyBatis 数据库 mysql数据库乐观锁悲观锁 上一篇文章<MySQL悲观锁总结和实践>谈到了MySQL悲观锁,但是悲观锁并不是适用于任何场景 ...