編輯:關於android開發
Android Hawk數據庫 github開源項目
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); // save list Hawk.put("key", List ); // save list Hawk.put("key", Map ); // save map Hawk.put("key", Set ); // 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); Listvalue = Hawk.get(key); List value = Hawk.get(key); Map value = Hawk.get(key); Set value = Hawk.get(key);
(一) 添加進項目
android studio 在gradle中進行配置
repositories { // ... maven { url "https://jitpack.io" } } dependencies { compile 'com.github.orhanobut:hawk:1.21' }
可以參考下方的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 boolean Hawk.chain() .put(KEY_LIST, List) .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 booleanor
同時移除多個
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
如果使用也請導入 如果不需要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功能
// ┏┓ ┏┓ //┏┛┻━━━┛┻┓ //┃ ┃ //┃ ━ ┃ //┃ ┳┛ ┗┳ ┃ //┃ ┃ //┃ ┻ ┃ //┃ ┃ //┗━┓ ┏━┛ // ┃ ┃ 神獸保佑 // ┃ ┃ 代碼無BUG! // ┃ ┗━━━┓ // ┃ ┣┓ // ┃ ┏┛ // ┗┓┓┏━┳┓┏┛ // ┃┫┫ ┃┫┫ // ┗┻┛ ┗┻┛
《Android源碼設計模式解析與實戰》讀書筆記(十七) 第十七章、中介者模式 中介者模式也稱為調解者模式或調停者模式,是一種行為型模式。 1.定義 中介者模式包裝
Android 貝塞爾曲線的淺析,android貝塞爾淺析博客也開了挺長時間了,一直都沒有來寫博客,主要原因是自己懶~~~此篇博客算是給2017年一個好的開始,同時也給2
Android 實現圖片畫畫板,本文主要講述了Android 實現圖片畫畫板 設計項目布局: <RelativeLayout xmlns:android=http
android的布局-----RelativeLayout(相對布局),relativelayout布局學習導圖 注:父容器定位的屬性值只能是Boolean ,兄弟組件