標籤:
Android Hawk資料庫 github開源項目
Hawk 是一個非常便捷的資料庫 . 操作資料庫只需一行代碼 , 能存任何資料類型 .
github 地址: https://github.com/orhanobut/hawk
Hawk 是一個簡單的 key-value 資料庫
它使用:
AES 加密
能選擇使用SharedPreferences 或者 SQLite
Gson解析 (文章下方的Simple中有替換fastJson的版本)
提供:
安全資料持久化
能儲存任何類型
先看看例子 符合項目的需要之後往下看
儲存例子:
Hawk.put("key", "something"); // Save stringHawk.put("key", true); // save booleanHawk.put("key", new Foo()); // save an objectHawk.put("key", List<String>); // save listHawk.put("key", List<Foo>); // save listHawk.put("key", Map<Foo,Foo>); // save mapHawk.put("key", Set<Foo>); // save setHawk.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‘}
eclipse 使用者請下載後匯入項目
可以參考下方的Simple
(二) 初始化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 booleanHawk.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 進行資料的儲存
使用的是google提供的Gson庫 , 但我的項目裡已經有了FastJson
為了控制包的大小所以將Gson的解析替換為 FastJson 使用的eclipse編寫的供大家參考
github 地址: https://github.com/orhanobut/hawk
eclipse Demo :待補
// ┏┓ ┏┓//┏┛┻━━━┛┻┓//┃ ┃//┃ ━ ┃//┃ ┳┛ ┗┳ ┃//┃ ┃//┃ ┻ ┃//┃ ┃//┗━┓ ┏━┛// ┃ ┃ 神獸保佑// ┃ ┃ 代碼無BUG!// ┃ ┗━━━┓// ┃ ┣┓// ┃ ┏┛// ┗┓┓┏━┳┓┏┛// ┃┫┫ ┃┫┫// ┗┻┛ ┗┻┛
希望對大家有用
Android Hawk資料庫 github開源項目