天天看點

安卓Hawk資料庫安卓Hawk資料庫

安卓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中進行配置

repositories {

// ...

maven { url "https://jitpack.io" }

}

dependencies {

compile '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

.setStorage(HawkBuilder.newSqliteStorage(this))
           

or

.setStorage(HawkBuilder.newSharedPrefStorage(this))
           

(三) 存資料

Hawk.put(key, T); // Returns the result as boolean
           

您還可以通過使用鍊功能存儲多個項目。記得在最後使用commit()。

// Returns the result as boolean

Hawk.chain()

.put(KEY_LIST, List<T>)

.put(KEY_ANOTHER,"test")

.commit();

(四) 取資料

T result = Hawk.get(key);
           

or  當為null的時候設定 預設值

T result = Hawk.get(key, T);
           

(五) 移除資料

Hawk.remove(key); // Returns the result as boolean           

or同時移除多個

Hawk.remove(KEY_LIST, KEY_NAME); // Returns the result as boolean           

(六) 判斷是否包含某個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 輸出:

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 進行資料的存儲

原文位址https://blog.csdn.net/fengyeNom1/article/details/81204986