这篇文章写的是关于Android开发中,数据持久化所使用到的SharedPreference的相关内容。SharedPreference可以让数据通过键值对的方式缓存到磁盘中,这是它的一大特性。为了让SharedPreference的使用更加简单和支持AES加密等功能,所以基于SharedPreferences封装了一个简单易用的框架,它的名字叫MicroKV。不多说,直接进入主题。
Github地址:https://github.com/mailhu/microkv
安装引入
步骤一、将JitPack存储库添加到根目录的build.gradle中:
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
步骤二、在项目的app模块下的build.gradle里:
dependencies {
implementation 'com.github.mailhu:microkv:1.3.8'
}
初始化
在你的项目自定义的Application类中初始化MicroKV组件。
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
//MicroKV组件初始化
MicroKV.initialize(this);
}
}
保存数据与加密
- defaultMicroKV( ):获取MicroKV对象,同时使用当前应用程序的包名来命名存储数据文件名。
- setKV( ):该方法已使用了重载,支持的数据类型有int、long、float、boolean、String和Set
。其中保存long和float类型的数值,记得在数值的末尾加上"L"和"f "。 - save( ):异步保存数据,无返回值。当然也可以使用commit( )保存数据,返回值类型为boolean型。
- customize( ):参数一:自定义存储文件的文件名;参数二:是否开启加密,若不填写,默认不开启。当开启加密后,MicroKV会对该文件中所有的字符串进行加密。
//通过创建对象调用
MicroKV kv = MicroKV.defaultMicroKV();
kv.setKV("int", 1949); //写入一个int类型的数据
kv.setKV("long", 299792458L); //写入一个long类型的数据
kv.setKV("float", 3.14f); //写入一个float类型的数据
kv.setKV("bool", true); //写入一个boolean类型的数据
kv.setKV("string", "Hello MicroKV"); //写入一个String的数据
kv.save();
//链式调用
MicroKV.defaultMicroKV()
.setKV("int", 2019)
.setKV("long", 299792458L)
.setKV("float", 3.14f)
.save();
//自定义文件名和开启加密功能
MicroKV.customize("MyInfo", true)
.setKV("nickname", "Lake")
.setKV("mail", "[email protected]")
.setKV("address", "广东 广州")
.setKV("age", 20)
.save();
读取数据和解密
- getInt( ):读取int类型的数据,若读取的键值不存在,会自动返回一个默认值,其他同类方法参考下面相关的代码。
- getKV( ):可以给该方法第二个参数指定默认值,若设置默认值的数据类型是long和float,需要分别在默认值的末尾加上"L"和"f"。
//通过指定方法读取数据
MicroKV kv = MicroKV.defaultMicroKV();
int i = kv.getInt("int");
long l = kv.getLong("long");
float f = kv.getFloat("float");
boolean b = kv.getBoolean("bool");
String s = kv.getString("string");
//通过重载方法读取数据
MicroKV kv = MicroKV.defaultMicroKV();
int i = kv.getKV("int", 0);
long l = kv.getKV("long", 0L);
float f = kv.getKV("float", 0f);
boolean b = kv.getKV("bool", false);
String s = kv.getKV("string", "");
//自定义文件和已加密的内容读取
MicroKV kv = MicroKV.customize("MyInfo", true);
String nickname = kv.getString("nickname");
String mail = kv.getString("mail");
String address = kv.getKV("address", "中国");
int age = kv.getKV("age", 0);
更新数据
更新数据的过程只需填写需要更新的键和值,如何调用save( )方法即可。
//非加密类型更新
MicroKV.defaultMicroKV()
.setKV("int", 2020)
.setKV("float", 3.14159f)
.save();
//加密类型更新
MicroKV.customize("MyInfo", true)
.setKV("nickname", "Lake Zhang")
.setKV("address", "广东 湛江")
.save();
移除数据
- removeKV( ):用于移除某个键值对。
- removeKVs( ):用于移除多个键值对。
//移除某个键值对
MicroKV.defaultMicroKV().removeKV("int");
MicroKV.customize("MyInfo").removeKV("age");
//需要移除多个键值对
String[] strings = new String[]{"nickname", "address"};
MicroKV.customize("MyInfo").removeKVs(strings);
结语
以上是MicroKV的使用方法,如果需要更详细的使用文档,可以到Github上查看该仓库的readme文档。MicroKV相当于是SharedPreference的操作框架,和SharedPreference支持的数据类型保持一致,同时加入数据加密等功能。MicroKV在设计的过程中一直围绕“微”字展开,一切操作都集中在MicroKV这个类上,开发者可以很轻松地上手使用。只要处理的数据不复杂,对高性能要求不苛刻,MicroKV可以满足日常的使用场景。