Hawk数据存储工具,使用超简单,可以替代SharePreference,作为本地存储。Hawk是一个非常便捷的数据库。 操作数据库只需一行代码 , 能存任何数据类型 。Github地址
Hawk同样是一个简单的key-value数据库。它使用: AES 加密,能选择使用SharedPreferences或者SQLite,Gson解析 (文章下方的Simple中有替换fastJson的版本)。提供安全数据持久化,能存储任何类型。
看看例子,符合项目的需要之后往下看。
存储数据:
Hawk.put("key", "something"); // Save string
Hawk.put("key", true); // save boolean
Hawk.put("key", new Foo()); // save an object
Hawk.put("key", List<String>); // save list
Hawk.put("key", List<Foo>); // save list
Hawk.put("key", Map<Foo,Foo>); // save map
Hawk.put("key", Set<Foo>); // save set
Hawk.put("key", 1234); // save numbers
获取数据:
String value = Hawk.get(key);
int value = Hawk.get(key);
Foo value = Hawk.get(key);
boolean value = Hawk.get(key);
List<String> value = Hawk.get(key);
List<Foo> value = Hawk.get(key);
Map<String,Foo> value = Hawk.get(key);
Set<Foo> value = Hawk.get(key);
(一) 添加进项目
android studio 在gradle中进行配置:
repositories {
// ...
maven { url "https://jitpack.io" }
}
dependencies {
implementation 'com.github.orhanobut:hawk:1.21'
}
(二) 初始化Hawk
初始化只需要一次就行了 放在你最开始执行的Activity里面或者Application。
Hawk.init(this)
.setEncryptionMethod(HawkBuilder.EncryptionMethod.MEDIUM)
.setStorage(HawkBuilder.newSqliteStorage(this))
.setLogLevel(LogLevel.FULL)
.build();
能使用高安全级别 初始化可能需要 36-400ms 并且需要你提供密码
Hawk.init(this)
.setEncryptionMethod(HawkBuilder.EncryptionMethod.HIGHEST)
.setStorage(HawkBuilder.newSqliteStorage(this))
.setLogLevel(LogLevel.FULL)
.build();
初始化可以选择 SQLite 或者 SharePreference
// Sqlite
.setStorage(HawkBuilder.newSqliteStorage(this))
// SharedPref
.setStorage(HawkBuilder.newSharedPrefStorage(this))
(三) 存数据
// Returns the result as boolean
Hawk.put(key, T);
您还可以通过使用链功能存储多个项目。记得在最后使用commit()。
// Returns the result as boolean
Hawk.chain()
.put(KEY_LIST, List<T>)
.put(KEY_ANOTHER,"test")
.commit();
(四) 取数据
T result = Hawk.get(key);
// 当为null的时候设置默认值
T result = Hawk.get(key, T);
(五) 移除数据
// Returns the result as boolean
Hawk.remove(key);
// 同时移除多个数据
// Returns the result as boolean
Hawk.remove(KEY_LIST, KEY_NAME);
(六) 判断是否包含某个key
boolean contains = Hawk.contains(key);
(七) 设置密码
Hawk.init(this)
.setEncryptionMethod(HawkBuilder.EncryptionMethod.HIGHEST)
.setPassword("password")
.setStorage(HawkBuilder.newSqliteStorage(this))
.setLogLevel(LogLevel.FULL)
.setCallback(new HawkBuilder.Callback() {
@Override
public void onSuccess() {
}
@Override
public void onFail(Exception e) {
}
})
.build();
(八) 注意事项
Hawk log 输出:
// as default it is NONE
Hawk.init(context,PASSWORD, LogLevel.FULL);
Hawk 支持 buildRx最近非常火的RxJava,如果使用也请导入 如果不需要Rx的功能 移除掉相应源码不会有影响。
混淆:
#Gson
-keep class com.google.gson.** { *; }
-keepattributes Signature