SharedPreferences工具类(2种)

2024-08-31 23:18
文章标签 工具 sharedpreferences

本文主要是介绍SharedPreferences工具类(2种),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!



下载地址  点击打开链接

-----------------------------------------------------------------首先看方法1------------------------------------------------------------------------------

SharedPreferencesUtils1

package com.example.sharedpreferences;import android.content.Context;
import android.content.SharedPreferences;
import android.support.annotation.NonNull;public class SharedPreferencesUtils1 {private String name;private Context mContext;/*** 当instance==null时候,加同步锁* * @return*/private static SharedPreferencesUtils1 instance;public static SharedPreferencesUtils1 getInstance() {if (instance == null) {synchronized (SharedPreferencesUtils1.class) {if (instance == null) {instance = new SharedPreferencesUtils1();}}}return instance;}private SharedPreferencesUtils1() {}/*** 初始化上下文参数以及文件名* * @param context*            ,上下文* @param name*            ,文件名*/public void init(Context context, String name) {this.mContext = context.getApplicationContext();this.name = name;}/*** 保存数据,泛型方法* * @param key*            ,键值* @param value*            ,数据* @param <V>*/public <V> void setValue(@NonNull String key, V value) {SharedPreferences sp = mContext.getSharedPreferences(name,Context.MODE_PRIVATE);SharedPreferences.Editor editor = sp.edit();if (value instanceof String) {editor.putString(key, (String) value);} else if (value instanceof Integer) {editor.putInt(key, (Integer) value);} else if (value instanceof Long) {editor.putLong(key, (Long) value);} else if (value instanceof Boolean) {editor.putBoolean(key, (Boolean) value);} else if (value instanceof Float) {editor.putFloat(key, (Float) value);}editor.commit();}/*** 读取数据,泛型方法* * @param key*            ,键值* @param defaultValue*            ,默认值* @param <V>* @return*/public <V> V getValue(@NonNull String key, V defaultValue) {SharedPreferences sp = mContext.getSharedPreferences(name,Context.MODE_PRIVATE);Object value = defaultValue;if (defaultValue instanceof String) {value = sp.getString(key, (String) defaultValue);} else if (defaultValue instanceof Integer) {value = sp.getInt(key, (Integer) defaultValue);} else if (defaultValue instanceof Long) {value = sp.getLong(key, (Long) defaultValue);} else if (defaultValue instanceof Boolean) {value = sp.getBoolean(key, (Boolean) defaultValue);} else if (defaultValue instanceof Float) {value = sp.getFloat(key, (Float) defaultValue);}return (V) value;}/*** 清除数据*/public void clearData() {SharedPreferences.Editor editor = mContext.getSharedPreferences(name,Context.MODE_PRIVATE).edit();editor.clear();editor.commit();}
}

-----------------------------------------------------------------继续看方法2------------------------------------------------------------------------------

GDPreferenceSettings

package com.example.sharedpreferences;public enum GDPreferenceSettings {SETTING_IS_FIRST("com.godinsec.glauncher_isFirstIn", Boolean.TRUE);private final String mId;private final Object mDefaultValue;private GDPreferenceSettings(String id, Object defaultValue) {this.mId = id;this.mDefaultValue = defaultValue;}public String getId() {return this.mId;}public Object getDefaultValue() {return this.mDefaultValue;}}

GDPreferences

package com.example.sharedpreferences;import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;public class GDPreferences {public static final String CCP_PREFERENCE = "geek2.xml";private static GDPreferences instance;public static GDPreferences getInstance() {if (instance == null) {synchronized (GDPreferences.class) {if (instance == null) {instance = new GDPreferences();}}}return instance;}private GDPreferences() {super();}public static SharedPreferences getSharedPreferences() {return MyApplication.getInstance().getSharedPreferences(CCP_PREFERENCE,Context.MODE_PRIVATE);}public static void savePreference(GDPreferenceSettings GDPreferenceSetting,Object value) {Map<GDPreferenceSettings, Object> prefs = new HashMap<GDPreferenceSettings, Object>();prefs.put(GDPreferenceSetting, value);savePreferences(prefs);}private static void savePreferences(Map<GDPreferenceSettings, Object> prefs) {SharedPreferences sp = getSharedPreferences();Editor editor = sp.edit();Iterator<GDPreferenceSettings> it = prefs.keySet().iterator();while (it.hasNext()) {GDPreferenceSettings pref = it.next();Object value = prefs.get(pref);if (value == null) {return;}if (value instanceof Boolean&& pref.getDefaultValue() instanceof Boolean) {editor.putBoolean(pref.getId(),((Boolean) value).booleanValue());} else if (value instanceof String&& pref.getDefaultValue() instanceof String) {editor.putString(pref.getId(), (String) value);} else if (value instanceof Integer&& pref.getDefaultValue() instanceof Integer) {editor.putInt(pref.getId(), (Integer) value);} else if (value instanceof Long&& pref.getDefaultValue() instanceof Long) {editor.putLong(pref.getId(), (Long) value);}}editor.commit();}
}

MyApplication

package com.example.sharedpreferences;import android.app.Application;public class MyApplication extends Application {private static MyApplication instance;@Overridepublic void onCreate() {// TODO Auto-generated method stubsuper.onCreate();this.instance = this;}public static MyApplication getInstance(){return instance;}}

最后看测试代码

MainActivity

package com.example.sharedpreferences;import android.app.Activity;
import android.os.Bundle;
import android.text.StaticLayout;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;public class MainActivity extends Activity {private static final String TAG = MainActivity.class.getSimpleName();@SuppressWarnings("static-access")@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);/*** 方法一*/SharedPreferencesUtils1 sp = SharedPreferencesUtils1.getInstance();sp.init(this, "geek.xml");sp.<String>setValue("name", "geek");String value = sp.<String>getValue("name", "");Log.i(TAG, "value-->"+value);/*** 方法二*/GDPreferences.getInstance().savePreference(GDPreferenceSettings.SETTING_IS_FIRST, false);boolean SETTING_IS_FIRST = GDPreferences.getSharedPreferences().getBoolean(GDPreferenceSettings.SETTING_IS_FIRST.getId(), (Boolean) GDPreferenceSettings.SETTING_IS_FIRST.getDefaultValue());Log.i(TAG, "SETTING_IS_FIRST-->"+SETTING_IS_FIRST);}}



这篇关于SharedPreferences工具类(2种)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1125274

相关文章

基于Python开发PDF转PNG的可视化工具

《基于Python开发PDF转PNG的可视化工具》在数字文档处理领域,PDF到图像格式的转换是常见需求,本文介绍如何利用Python的PyMuPDF库和Tkinter框架开发一个带图形界面的PDF转P... 目录一、引言二、功能特性三、技术架构1. 技术栈组成2. 系统架构javascript设计3.效果图

MyBatis-Plus中静态工具Db的多种用法及实例分析

《MyBatis-Plus中静态工具Db的多种用法及实例分析》本文将详细讲解MyBatis-Plus中静态工具Db的各种用法,并结合具体案例进行演示和说明,具有很好的参考价值,希望对大家有所帮助,如有... 目录MyBATis-Plus中静态工具Db的多种用法及实例案例背景使用静态工具Db进行数据库操作插入

Redis客户端工具之RedisInsight的下载方式

《Redis客户端工具之RedisInsight的下载方式》RedisInsight是Redis官方提供的图形化客户端工具,下载步骤包括访问Redis官网、选择RedisInsight、下载链接、注册... 目录Redis客户端工具RedisInsight的下载一、点击进入Redis官网二、点击RedisI

基于Python实现一个PDF特殊字体提取工具

《基于Python实现一个PDF特殊字体提取工具》在PDF文档处理场景中,我们常常需要针对特定格式的文本内容进行提取分析,本文介绍的PDF特殊字体提取器是一款基于Python开发的桌面应用程序感兴趣的... 目录一、应用背景与功能概述二、技术架构与核心组件2.1 技术选型2.2 系统架构三、核心功能实现解析

使用Python开发一个图像标注与OCR识别工具

《使用Python开发一个图像标注与OCR识别工具》:本文主要介绍一个使用Python开发的工具,允许用户在图像上进行矩形标注,使用OCR对标注区域进行文本识别,并将结果保存为Excel文件,感兴... 目录项目简介1. 图像加载与显示2. 矩形标注3. OCR识别4. 标注的保存与加载5. 裁剪与重置图像

基于.NET编写工具类解决JSON乱码问题

《基于.NET编写工具类解决JSON乱码问题》在开发过程中,我们经常会遇到JSON数据处理的问题,尤其是在数据传输和解析过程中,很容易出现编码错误导致的乱码问题,下面我们就来编写一个.NET工具类来解... 目录问题背景核心原理工具类实现使用示例总结在开发过程中,我们经常会遇到jsON数据处理的问题,尤其是

Java中有什么工具可以进行代码反编译详解

《Java中有什么工具可以进行代码反编译详解》:本文主要介绍Java中有什么工具可以进行代码反编译的相关资,料,包括JD-GUI、CFR、Procyon、Fernflower、Javap、Byte... 目录1.JD-GUI2.CFR3.Procyon Decompiler4.Fernflower5.Jav

使用Python创建一个能够筛选文件的PDF合并工具

《使用Python创建一个能够筛选文件的PDF合并工具》这篇文章主要为大家详细介绍了如何使用Python创建一个能够筛选文件的PDF合并工具,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录背景主要功能全部代码代码解析1. 初始化 wx.Frame 窗口2. 创建工具栏3. 创建布局和界面控件4

Docker部署Jenkins持续集成(CI)工具的实现

《Docker部署Jenkins持续集成(CI)工具的实现》Jenkins是一个流行的开源自动化工具,广泛应用于持续集成(CI)和持续交付(CD)的环境中,本文介绍了使用Docker部署Jenkins... 目录前言一、准备工作二、设置变量和目录结构三、配置 docker 权限和网络四、启动 Jenkins

MobaXterm远程登录工具功能与应用小结

《MobaXterm远程登录工具功能与应用小结》MobaXterm是一款功能强大的远程终端软件,主要支持SSH登录,拥有多种远程协议,实现跨平台访问,它包括多会话管理、本地命令行执行、图形化界面集成和... 目录1. 远程终端软件概述1.1 远程终端软件的定义与用途1.2 远程终端软件的关键特性2. 支持的