封装sharedPreferences SettingsSPData

简介: /*************************************************************************** * 封装sharedPreferences SettingsSPData * 说明: * 主要为了解决每次使用sharedPreferences的时候,都要操作很多次同样的操作, * 于是将很多操作直接放到一起来, 图个省事,以后不用每次都去操作这些相同的操作。
/***************************************************************************
 *                封装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() != 0);
    }

    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, 0);
        }
        return 0;
    }

    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, 0);
        }
        return 0;
    }

    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, 0);
        }
        return 0;
    }

    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, 0);
        } else if (type instanceof Float) {
            value = sp.getFloat(key, 0);
        } else if (type instanceof Long) {
            value = sp.getLong(key, 0);
        } 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", 3);
        Log.e("SettingsSPData", "int = " + getValue("int", Integer.valueOf(0)));
        pushFloat("float", 3.14f);
        Log.e("SettingsSPData", "float = " + getValue("float", Float.valueOf(0)));
        
        HashMap<String, Object> keyvalues = new HashMap<String, Object>();
        keyvalues.put("name", "zengsf");
        keyvalues.put("address", "shenzhen");
        keyvalues.put("float", 3.14f);
        keyvalues.put("int", 3);
        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(0));
        keyTypes.put("int", Integer.valueOf(0));
        keyTypes.put("boolean", Boolean.valueOf(false));
        
        Log.e(TAG, getValues(keyTypes).toString());

        Log.e("SettingsSPData", "age = " + getValue("age", Integer.valueOf(0)));
        Log.e("SettingsSPData", "int = " + getValue("int", Integer.valueOf(0)));
        Log.e("SettingsSPData", "float = " + getValue("float", Float.valueOf(0)));
        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
         */

    }
}

 

目录
相关文章
|
C#
C#清除DataGridView数据DataGridView中的“无法删除未提交的新行”
C#清除DataGridView数据DataGridView中的“无法删除未提交的新行”
1704 0
C#清除DataGridView数据DataGridView中的“无法删除未提交的新行”
长上下文能力只是吹牛?最强GPT-4o正确率仅55.8%,开源模型不如瞎蒙
【8月更文挑战第10天】新研究NoCha挑战显示,即使是顶级的大型语言模型GPT-4o,在处理长篇幅文本时正确率仅55.8%,低于人类直观水平。该挑战基于近作英文小说,检验模型对整本书信息的理解与推理能力。结果显示,模型在全局推理上的表现不佳,倾向于依赖局部信息而非整体上下文,尤其是在复杂推理需求高的科幻小说上表现更弱。这一发现揭示了当前模型在处理长上下文任务上的局限性。论文链接: [https://arxiv.org/pdf/2406.16264](https://arxiv.org/pdf/2406.16264)。
331 65
MAGICORE:基于多代理迭代的粗到细精炼框架,提升大语言模型推理质量
MAGICORE是一种多代理迭代框架,旨在改进大语言模型(LLM)的推理能力。该框架通过将问题分类为简单或困难,并分别为其应用粗粒度聚合或细粒度精炼,有效避免了过度精炼、错误定位及精炼不足等问题。MAGICORE包含Solver、Reviewer和Refiner三个角色,结合结果和过程奖励模型,实现有针对性的反馈和迭代精炼。实验结果显示,MAGICORE在多个数据集和模型上显著优于现有的聚合和精炼方法,提升了推理准确性和样本效率。
417 3
MAGICORE:基于多代理迭代的粗到细精炼框架,提升大语言模型推理质量
|
Kubernetes 应用服务中间件 调度
k8s的Pod常见的几种调度形式
k8s的Pod常见的几种调度形式
236 0
|
数据可视化 Python
【2023高教社杯】C题 蔬菜类商品的自动定价与补货决策 问题分析、数学模型及python代码实现
本文介绍了2023年高教社杯数学建模竞赛C题,涉及蔬菜类商品的自动定价与补货决策,包括问题分析、数学模型的构建以及Python代码实现,旨在优化商超的补货和定价策略以提高收益。
551 1
|
安全 算法 Shell
PWN练习---Heap_1
PWN练习---Heap_1
274 7
python 随机划分图片数据集以及移动标注
这篇文章提供了一个Python脚本,用于随机划分图片数据集为训练集和测试集,并将对应的标注文件移动到相应的子文件夹中,以减少训练使用的数据量。
|
SQL 网络协议 Java
JAVA SQLServerException: 通过端口 1433 连接到主机 127.0.0.1 的 TCP/IP 连接失败
JAVA SQLServerException: 通过端口 1433 连接到主机 127.0.0.1 的 TCP/IP 连接失败
345 0
|
Swift
[!] Unable to determine Swift version for the following pods:
[!] Unable to determine Swift version for the following pods:
308 0
|
JSON NoSQL Redis
ruoyi-nbcio发送消息的SerializationException: Could not read JSON: Unexpected character (‘¬‘ (code 172))
ruoyi-nbcio发送消息的SerializationException: Could not read JSON: Unexpected character (‘¬‘ (code 172))
458 0