版权声明:本文为HaiyuKing原创文章,转载请注明出处!

前言

可以替代ACache用来保存用户名、密码。

相较于Acache,不存在使用猎豹清理大师进行垃圾清理的时候把缓存的数据清理掉的问题。

效果图

代码分析

需要注意的是命名的KEY值直接在PreferencesUtils类中声明了。可以根据项目要求,在Globals类文件(或者在类似文件(用于存放全局变量和公共方法))中声明。

使用步骤

一、项目组织结构图

注意事项:

1、导入类文件后需要change包名以及重新import R文件路径

2、Values目录下的文件(strings.xml、dimens.xml、colors.xml等),如果项目中存在,则复制里面的内容,不要整个覆盖

二、导入步骤

将PreferencesUtils复制到项目中

package com.why.project.preferencesutilsdemo.utils;

import android.content.Context;
import android.content.SharedPreferences; /**
* Used 临时存储数据操作类(全)
*/
public class PreferencesUtils {
public static String PREFERENCE_NAME = "why"; /**用户名的key值*/
public static String USERNAME = "username"; /**存储字符串*/
public static boolean putString(Context context, String key, String value) {
SharedPreferences preferences = context.getSharedPreferences(PREFERENCE_NAME, 0);
SharedPreferences.Editor editor = preferences.edit();
editor.putString(key, value);
return editor.commit();
}
/**读取字符串*/
public static String getString(Context context, String key) {
return getString(context, key, null);
}
/**读取字符串(带默认值的)*/
public static String getString(Context context, String key, String defaultValue) {
SharedPreferences preferences = context.getSharedPreferences(PREFERENCE_NAME, 0);
return preferences.getString(key, defaultValue);
}
/**存储整型数字*/
public static boolean putInt(Context context, String key, int value) {
SharedPreferences preferences = context.getSharedPreferences(PREFERENCE_NAME, 0);
SharedPreferences.Editor editor = preferences.edit();
editor.putInt(key, value);
return editor.commit();
}
/**读取整型数字*/
public static int getInt(Context context, String key) {
return getInt(context, key, -1);
}
/**读取整型数字(带默认值的)*/
public static int getInt(Context context, String key, int defaultValue) {
SharedPreferences preferences = context.getSharedPreferences(PREFERENCE_NAME, 0);
return preferences.getInt(key, defaultValue);
}
/**存储长整型数字*/
public static boolean putLong(Context context, String key, long value) {
SharedPreferences preferences = context.getSharedPreferences(PREFERENCE_NAME, 0);
SharedPreferences.Editor editor = preferences.edit();
editor.putLong(key, value);
return editor.commit();
}
/**读取长整型数字*/
public static long getLong(Context context, String key) {
return getLong(context, key, 0xffffffff);
}
/**读取长整型数字(带默认值的)*/
public static long getLong(Context context, String key, long defaultValue) {
SharedPreferences preferences = context.getSharedPreferences(PREFERENCE_NAME, 0);
return preferences.getLong(key, defaultValue);
}
/**存储Float数字*/
public static boolean putFloat(Context context, String key, float value) {
SharedPreferences preferences = context.getSharedPreferences(PREFERENCE_NAME, 0);
SharedPreferences.Editor editor = preferences.edit();
editor.putFloat(key, value);
return editor.commit();
}
/**读取Float数字*/
public static float getFloat(Context context, String key) {
return getFloat(context, key, -1.0f);
}
/**读取Float数字(带默认值的)*/
public static float getFloat(Context context, String key, float defaultValue) {
SharedPreferences preferences = context.getSharedPreferences(PREFERENCE_NAME, 0);
return preferences.getFloat(key, defaultValue);
}
/**存储boolean类型数据*/
public static boolean putBoolean(Context context, String key, boolean value) {
SharedPreferences preferences = context.getSharedPreferences(PREFERENCE_NAME, 0);
SharedPreferences.Editor editor = preferences.edit();
editor.putBoolean(key, value);
return editor.commit();
}
/**读取boolean类型数据*/
public static boolean getBoolean(Context context, String key) {
return getBoolean(context, key, false);
}
/**读取boolean类型数据(带默认值的)*/
public static boolean getBoolean(Context context, String key, boolean defaultValue) {
SharedPreferences preferences = context.getSharedPreferences(PREFERENCE_NAME, 0);
return preferences.getBoolean(key, defaultValue);
}
/**清除数据*/
public static boolean clearPreferences(Context context) {
SharedPreferences pref = context.getSharedPreferences(PREFERENCE_NAME, 0);
SharedPreferences.Editor editor = pref.edit();
editor.clear();
return editor.commit();
}
}

PreferencesUtils.java

三、使用方法

package com.why.project.preferencesutilsdemo;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast; import com.why.project.preferencesutilsdemo.utils.PreferencesUtils; public class MainActivity extends AppCompatActivity { private EditText mUsernameEdt;
private Button mLoginBtn; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); initViews();
initDatas();
initEvents();
} //初始化控件
private void initViews(){
mUsernameEdt = (EditText) findViewById(R.id.edt_username);
mLoginBtn = (Button) findViewById(R.id.btn_login);
} //初始化数据
private void initDatas(){
//判断是否缓存了用户名,如果是的话,读取缓存的用户名并填充到输入框中
initNamePwdFromCache();
} //初始化事件
private void initEvents(){
mLoginBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String userName = mUsernameEdt.getText().toString();
//缓存用户名
PreferencesUtils.putString(MainActivity.this,PreferencesUtils.USERNAME,userName);
Toast.makeText(MainActivity.this,"已缓存用户名:"+userName,Toast.LENGTH_SHORT).show();
}
});
} /**
* 从缓存中查询用户名是否保存,并加载用户名
* */
private void initNamePwdFromCache() {
//有缓存文件
String userNameCache = PreferencesUtils.getString(MainActivity.this,PreferencesUtils.USERNAME);
if (userNameCache != null) {
mUsernameEdt.setText(userNameCache);
Toast.makeText(MainActivity.this,"已加载缓存的用户名:"+userNameCache,Toast.LENGTH_SHORT).show();
}
}
}

混淆配置

参考资料

暂时空缺

项目demo下载地址

https://github.com/haiyuKing/PreferencesUtilsDemo

PreferencesUtils【SharedPreferences操作工具类】的更多相关文章

  1. Code片段 : .properties属性文件操作工具类 & JSON工具类

    摘要: 原创出处:www.bysocket.com 泥瓦匠BYSocket 希望转载,保留摘要,谢谢! “贵专” — 泥瓦匠 一.java.util.Properties API & 案例 j ...

  2. [转载]C# FTP操作工具类

    本文转载自<C# Ftp操作工具类>,仅对原文格式进行了整理. 介绍了几种FTP操作的函数,供后期编程时查阅. 参考一: using System; using System.Collec ...

  3. 拼音操作工具类 - PinyinUtil.java

    拼音操作工具类,提供字符串转换成拼音数组.汉字转换成拼音.取汉字的首字母等方法. 源码如下:(点击下载 -PinyinUtil.java.pinyin4j-2.5.0.jar ) import net ...

  4. DataTable操作工具类DataTableHelper

    DataTable操作工具类DataTableHelper. 功能介绍: 将泛型集合填充为数据表 将泛型填充为数据表 将对象集合填充为数据表 将对象填充为数据表 将定IDictionary数据转换为D ...

  5. 【转载】ASP.NET工具类:文件夹目录Directory操作工具类

    在ASP.NET开发网站的过程中,有时候会涉及到文件夹相关操作,如判断文件夹目录是否存在.删除文件夹目录.创建文件.删除文件.复制文件夹等等.这一批有关文件目录的操作可以通过Directory类.Fi ...

  6. Java SE 之 数据库操作工具类(DBUtil)设计

    JDBC创建数据库基本连接 //1.加载驱动程序 Class.forName(driveName); //2.获得数据库连接 Connection connection = DriverManager ...

  7. JavaScript时间操作工具类

    /** * 时间操作工具类 * * @author zwq * */ var TimeFrameUtil = { /** * 格式化日期 * @param date {Date} 日期 * @para ...

  8. java基础37 集合框架工具类Collections和数组操作工具类Arrays

    一.集合框架工具类:Collections 1.1.Collections类的特点 该工具类中所有的方法都是静态的 1.2.Collections类的常用方法 binarySearch(List< ...

  9. Android 中替代 sharedpreferences 工具类的实现

    Android 中替代 sharedpreferences 工具类的实现 背景 想必大家一定用过 sharedpreferences 吧!就我个人而言,特别讨厌每次 put 完数据还要 commit. ...

随机推荐

  1. eclipse下搭建hibernate5.0环境

    hibernate引入的jar包:hibernate-release-5.0.12.Final.zip 数据库驱动:mysql-connector-java-5.1.46 二.安装hibernate插 ...

  2. bzoj 4008 亚瑟王 期望概率dp

    对于这种看起来就比较傻逼麻烦的题,最关键的就是想怎么巧妙的设置状态数组,使转移尽可能的简洁. 一开始我想的是f[i][j]表示到第j轮第i张牌还没有被选的概率,后来发现转移起来特别坑爹,还会有重的或漏 ...

  3. BZOJ_2795_[Poi2012]A Horrible Poem_hash+暴力

    Description 给出一个由小写英文字母组成的字符串S,再给出q个询问,要求回答S某个子串的最短循环节. 如果字符串B是字符串A的循环节,那么A可以由B重复若干次得到. Input 第一行一个正 ...

  4. Volley手写属于自己的万能网络访问框架

    用户在调用层(Activity或Service中),发起一个网络请求,该请求肯定包含url,请求参数(requestParameter),以及我们需要给调用层提供一个请求成功或失败以后回调监听的接口d ...

  5. linux学习笔记基础篇(一)

    一.IP操作 1.临时修改IP ,执行命令  ifconfig  网卡名称  新ip :例如 ifconfg  nescc 192.168.1.110 ,重启失效 2.重启网络 ,执行命令 syste ...

  6. TF.learn学习

    官网地址:https://www.tensorflow.org/versions/r1.1/get_started/tflearn 1.代码例子 实现自定义的Estimator 使用DNNClassi ...

  7. 文本分布式表示(二):用tensorflow和word2vec训练词向量

    看了几天word2vec的理论,终于是懂了一些.理论部分我推荐以下几篇教程,有博客也有视频: 1.<word2vec中的数学原理>:http://www.cnblogs.com/pegho ...

  8. 基于SpringBoot从零构建博客网站 - 整合lombok和mybatis-plus提高开发效率

    在上一章节中<技术选型和整合开发环境>,确定了开发的技术,但是如果直接这样用的话,可能开发效率会不高,为了提高开发的效率,这里再整合lombok和mybatis-plus两个组件. 1.l ...

  9. 漏洞经验分享丨Java审计之XXE(下)

    上篇内容我们介绍了XXE的基础概念和审计函数的相关内容,今天我们将继续分享Blind XXE与OOB-XXE的知识点以及XXE防御方法,希望对大家的学习有所帮助! 上期回顾  ◀漏洞经验分享丨Java ...

  10. 京东云罗玉杰:OpenResty 在直播场景中的应用

    2019 年 3 月 23 日,OpenResty 社区联合又拍云,举办 OpenResty × Open Talk 全国巡回沙龙·北京站,京东云技术专家罗玉杰在活动上做了< OpenResty ...