Android 中替代 sharedpreferences 工具类的实现

背景

想必大家一定用过 sharedpreferences 吧!就我个人而言,特别讨厌每次 put 完数据还要 commit。对 我就是这么懒!哈哈。另外,sharedpreferences 不能存类,集合和bitmap等数据!这点也让人非常不爽啊!所以,我就在这个美好的星期天撸了名为 SHARE 的工具类用来替代 sharedpreferences。


项目介绍

整体架构

先来看一下,整体架构图(画的不好请大家见谅):

从图中,我们可以了解到,当我们 put 数据的时候,我们同时存入到 内存和和sd卡中。读取的时候,优先从内存中获取,如果内存中没有,则从sd中获取。如果两者都没有,则使用用户自己设置的默认值!

代码介绍

下来看一下代码目录结构:

  • DiskLruCache:硬盘缓存的解决方案(非Google官方编写,但获得官方认证。地址)
  • Cache:接口。抽象了对数据的操作
  • MemoryCache:内存缓存,实现了Cache接口
  • DiskCache:硬盘缓存,同样实现了Cache接口
  • Share:这个类就是我们使用的!他主要是提供了 put 和 get两种方法!其实就是对 MemoryCache 和 DiskCache 两个类的操作!

使用

在 Application中初始化:

@Override
public void onCreate() {
super.onCreate();
File file = new File(Environment.getExternalStorageDirectory().toString() + File.separator + "sample");
if (!file.exists()) {
file.mkdirs();
}
Share.init("CACHE", 10 * 1024, file.toString());
}

之后,你就可以任意的使用它了!

    //设置字符串
Share.putString("str", "你好啊");
//设置int
Share.putInt("int", 1);
//设置boolean
Share.putBoolean("boolean", true);
//设置double
Share.putDouble("double", 2.1d);
//设置long
Share.putLong("long", 20000);
//设置flot
Share.putFloat("float", 2.2f);
//设置类
Share.putObject("obj", people);
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.dd);
//设置bitmap
Share.putBitmap("bitmap", bitmap);
//设置集合
Share.putObject("list", items);

    //得到字符串
String str=Share.getString("str");
//得到double
double dd=Share.getDouble("double", 0.0d);
//得到int
int value=Share.getInt("int", 0);
//得到float
float ff=Share.getFloat("float", 0.0f);
//得到bitmap
Bitmap map=Share.getBitmap("bitmap");
//得到集合
List<String> copy= (List<String>) Share.getObject("list");
.....

使用就是如此简单!

近期要完成的新功能

1.对泛型的支持.


项目地址

希望这个项目对大家有用。也希望多 star .同时也能多多提出修改意见!不管是对项目本身还是代码!!!!

最新文章

  1. MVC中使用[ValidateAntiForgeryToken]防止CSRF 注入攻击
  2. 将库打包到nuget服务器
  3. floyd算法
  4. HtmlAgilityPack组件
  5. 关于outerWidth()属性
  6. 如何申请TexturePacker注册码
  7. POJ 3258 River Hopscotch 二分枚举
  8. HDU-4920 Matrix multiplication
  9. JavaScript----Performance Tool and Process
  10. armv8(aarch64)linux内核中flush_dcache_all函数详细分析
  11. 【Android】读取sdcard卡上的全部图片而且显示,读取的过程有进度条显示
  12. CentOS 7 x64 安装 Ceph
  13. string 转 int
  14. Asp.Net登陆记住用户功能实现
  15. 【ASP.NET MVC系列】浅谈ASP.NET MVC 视图
  16. redis集群学习
  17. C++中的inline用法
  18. 在Shell脚本中获取指定进程的PID
  19. OneProxy 管理
  20. FTP 其他设置

热门文章

  1. 关于ThreadLocal变量的一个坑
  2. Spring3.0官网文档学习笔记(四)--3.1~3.2.3
  3. java基础讲解10-----类的高级特性
  4. EMQ配置“ClientId 认证”
  5. 每天进步一点点——Ganglia的Python扩展模块开发
  6. STM32的IO口灌入电流和输出驱动电流最大是多少?
  7. 64位Windows系统如何配置32位ODBC数据源
  8. 点滴积累【JS】---JS小功能(setInterval实现图片效果显示时间)
  9. [k8s]组件日志级别说明
  10. [svc]caffe安装笔记-显卡购买