Android Hawk數據庫 github開源項目


Android Hawk數據庫 github開源項目


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

eclipse 用戶請下載后導入項目

能夠參考下方的Simple


(二) 初始化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))

(三) 存數據

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

(七) 設置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 進行數據的存儲

使用的是google提供的Gson庫  ,  但我的項目里已經有了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功能


轉載請注明http://blog.csdn.net/aaawqqq/article/details/50352309



//  ┏┓   ┏┓
//┏┛┻━━━┛┻┓
//┃       ┃
//┃   ━   ┃
//┃ ┳┛ ┗┳ ┃
//┃       ┃
//┃   ┻   ┃
//┃       ┃
//┗━┓   ┏━┛
//   ┃   ┃   神獸保佑
//   ┃   ┃   代碼無BUG。
//   ┃   ┗━━━┓
//   ┃       ┣┓
//   ┃       ┏┛
//   ┗┓┓┏━┳┓┏┛
//     ┃┫┫ ┃┫┫
//     ┗┻┛ ┗┻┛

希望對大家實用 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM