Android之Hawk数据库

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值