安卓Hawk数据库

Hawk数据存储工具,使用超简单,可以替代SharePreference。

Hawk 是一个非常便捷的数据库  . 操作数据库只需一行代码 , 能存任何数据类型 .

github 地址: https://github.com/orhanobut/hawk


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中进行配置

[java]  view plain  copy
  1. repositories {  
  2.   // ...  
  3.   maven { url "https://jitpack.io" }  
  4. }  
  5.   
  6. dependencies {  
  7.   compile 'com.github.orhanobut:hawk:1.21'  
  8. }  


(二) 初始化Hawk

初始化只需要一次就行了  放在你最开始执行的activity里面 或者 application

[java]  view plain  copy
  1. Hawk.init(this)  
  2.     .setEncryptionMethod(HawkBuilder.EncryptionMethod.MEDIUM)  
  3.     .setStorage(HawkBuilder.newSqliteStorage(this))  
  4.     .setLogLevel(LogLevel.FULL)  
  5.     .build();  


能使用高安全级别  初始化可能需要 36-400ms 并且需要你提供密码  

[java]  view plain  copy
  1. Hawk.init(this)  
  2.     .setEncryptionMethod(HawkBuilder.EncryptionMethod.HIGHEST)  
  3.     .setStorage(HawkBuilder.newSqliteStorage(this))  
  4.     .setLogLevel(LogLevel.FULL)  
  5.     .build();  


初始化可以选择 SQLite 或者 SharePreference

[java]  view plain  copy
  1. .setStorage(HawkBuilder.newSqliteStorage(this))  
or
[java]  view plain  copy
  1. .setStorage(HawkBuilder.newSharedPrefStorage(this))  


(三) 存数据

[java]  view plain  copy
  1. Hawk.put(key, T); // Returns the result as boolean  


您还可以通过使用链功能存储多个项目。记得在最后使用commit()。
[java]  view plain  copy
  1. // Returns the result as boolean  
  2. Hawk.chain()  
  3.      .put(KEY_LIST, List<T>)  
  4.      .put(KEY_ANOTHER,"test")  
  5.      .commit();  

(四) 取数据

[java]  view plain  copy
  1. T result = Hawk.get(key);  
or  

当为null的时候设置 默认值

[java]  view plain  copy
  1. T result = Hawk.get(key, T);  

(五) 移除数据

[java]  view plain  copy
  1. Hawk.remove(key); // Returns the result as boolean  
or

同时移除多个

[java]  view plain  copy
  1. Hawk.remove(KEY_LIST, KEY_NAME); // Returns the result as boolean  

(六) 判断是否包含某个key 

[java]  view plain  copy
  1. boolean contains = Hawk.contains(key);  


(七) 设置密码

[java]  view plain  copy
  1. Hawk.init(this)  
  2.     .setEncryptionMethod(HawkBuilder.EncryptionMethod.HIGHEST)  
  3.     .setPassword("password")  
  4.     .setStorage(HawkBuilder.newSqliteStorage(this))  
  5.     .setLogLevel(LogLevel.FULL)  
  6.     .setCallback(new HawkBuilder.Callback() {  
  7.       @Override  
  8.       public void onSuccess() {  
  9.   
  10.       }  
  11.   
  12.       @Override  
  13.       public void onFail(Exception e) {  
  14.   
  15.       }  
  16.     })  
  17.     .build();  

(八) 注意事项

Hawk log 输出:

[java]  view plain  copy
  1. Hawk.init(context,PASSWORD, LogLevel.FULL); // as default it is NONE  
Hawk 支持  buildRx  最近非常火的RxJava  

如果使用也请导入  如果不需要Rx的功能 移除掉相应源码不会有影响


混淆:

#Gson
-keep class com.google.gson.** { *; }
-keepattributes Signature


(最后) 遇到的问题

Hawk  使用Json 进行数据的存储

使用的是google提供的Gson库  ,  但我的项目里已经有了FastJson  

为了控制包的大小所以将Gson的解析替换为 FastJson   使用的eclipse编写的供大家参考


github 地址: https://github.com/orhanobut/hawk

猜你喜欢

转载自blog.csdn.net/qq_36347817/article/details/80684327
今日推荐