版权声明:本文为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. 爬取拉勾网招聘信息并使用xlwt存入Excel

    xlwt 1.3.0 xlwt 文档 xlrd 1.1.0 python操作excel之xlrd 1.Python模块介绍 - xlwt ,什么是xlwt? Python语言中,写入Excel文件的扩 ...

  2. 高德地图 地铁图adcode 城市代码

    北京 1100天津 1200石家庄 1301沈阳 2101大连 2102长春 2201哈尔滨 2301上海 3100南京 3201无锡 3202苏州 3205杭州 3301宁波 3302合肥 3401 ...

  3. java中读取配置文件ResourceBundle和Properties两种方式比较

    今天在开发的时候,需要把一些信息放到配置文件中,方便后续的修改,注意到用的是ResourceBundle读取配置文件的方式,记得之前也见过使用Properties的方式,就比较好奇这两种方式的区别,网 ...

  4. loj6271「长乐集训 2017 Day10」生成树求和 加强版

    又是一个矩阵树套多项式的好题. 这里我们可以对每一位单独做矩阵树,但是矩阵树求的是边权积的和,而这里我们是要求加法,于是我们i将加法转化为多项式的乘法,其实这里相当于一个生成函数?之后如果我们暴力做的 ...

  5. BZOJ_5055_膜法师_树状数组+离散化

    BZOJ_5055_膜法师_树状数组+离散化 Description 在经历过1e9次大型战争后的宇宙中现在还剩下n个完美维度, 现在来自多元宇宙的膜法师,想偷取其中的三个维度为伟大的长者续秒, 显然 ...

  6. shell脚本中cd命令无效

    对于一段包含cd 命令的shell脚本(test.sh): #!/bin/bash cd .. mkdir ./test 运行: sh ./test.sh 脚本运行时无法在上级目录建立test文件 此 ...

  7. PoiDemo【Android将表单数据生成Word文档的方案之二(基于Poi4.0.0)】

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 使用Poi实现android中根据模板文件生成Word文档的功能.这里的模板文件是doc文件.如果模板文件是docx文件的话,请阅读 ...

  8. Supervisor守护DotNet Core控制台程序

    Supervisor 相信对Linux系统很熟的都知道这个软件,基于Python写的一个守护进程软件.具体的介绍和使用我就不再赘述了. 使用asp.net core 部署在Linux常用的方法 我们可 ...

  9. DownEditTextView【自定义Edittext对Android 软键盘向下的监听】

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 记录自定义EditText控件实现监听软键盘隐藏事件的功能.基本上和参考资料相同. 效果图    代码分析 自定义EditText子 ...

  10. ShortcutBadgerDemo【安卓应用角标(badge)实现方案】

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 概述 本文主要使用的开源库是 leolin310148/ShortcutBadger,但是在其基础上做了一些修改. 什么是应用角标? 1. ...