Android Hawk用法小結(jié)

Hawk 是一個很便捷的數(shù)據(jù)庫 . 操作數(shù)據(jù)庫僅僅需一行代碼 , 能存不論什么數(shù)據(jù)類型 .

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

Hawk 是一個簡單的 key-value 數(shù)據(jù)庫

它使用:
AES 加密
能選擇使用SharedPreferences 或者 SQLite
Gson解析 (文章下方的Simple中有替換fastJson的版本號)
提供:
安全數(shù)據(jù)持久化
能存儲不論什么類型

先看看樣例 符合項目的須要之后往下看

存儲樣例:

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 而且須要你提供password

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))

(三) 存數(shù)據(jù)

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();

(四) 取數(shù)據(jù)

T result = Hawk.get(key);
or  
當為null的時候設置 默認值

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

(五) 移除數(shù)據(jù)

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

(六) 推斷是否包括某個key

boolean contains = Hawk.contains(key);

(七) 設置password

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 進行數(shù)據(jù)的存儲

使用的是google提供的Gson庫 , 但我的項目里已經(jīng)有了FastJson

為了控制包的大小所以將Gson的解析替換為 FastJson 使用的eclipse編寫的供大家參考

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

eclipse Demo

下載地址:http://download.csdn.net/detail/aaawqqq/9367130

Demo中 使用的eclipse 改動項目 ,
Demo中有4個部分:
hawk_main、
hawk_gson-lib 、 //gson包作為解析方式 去掉rx功能
hawk_fastJson-lib 、 //fastJson 包作為解析方式 去掉rx功能
hawk_lib //gson包作為解析方式 有rx功能 但須要自行加入rx包


當中 hawk_main 是主Demo
其他3個都是lib庫 選擇當中一個即可
lib對解析方式做了改動 分為gson和fastjson版本號
hawk_lib 是源代碼 須要加入rx 才干使用rx功能

原文地址

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內(nèi)容

  • JSON的特點: 1、JSON比XML的數(shù)據(jù)傳遞的有效性高;2、JSON完全獨立于編程語言;3、JSON的本質(zhì)是具...
    程序員之路閱讀 3,543評論 0 3
  • 本文出自 Eddy Wiki ,轉(zhuǎn)載請注明出處:http://eddy.wiki/interview-java.h...
    eddy_wiki閱讀 2,232評論 0 14
  • 請允許我借鑒前輩們的東西~~~~ 感激不盡~~~~~ 以下為Android 框架排行榜 么么噠~ Android...
    嗯_新閱讀 2,110評論 3 32
  • 一 、各個JSON技術的簡介和優(yōu)劣 json-lib json-lib最開始的也是應用最廣泛的json解析工具,j...
    a_simple_coder閱讀 11,217評論 1 5
  • 十五那夜 放飛了孔明燈 蠟火升騰 隨風劃破夜空 飛遠了,不見了 另一座城市的你 看見了嗎 那夜 一排排的孔明燈 由...
    秋之楓520閱讀 366評論 0 4