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。
// ┃   ┗━━━┓
// ┃       ┣┓
// ┃       ┏┛
// ┗┓┓┏━┳┓┏┛
// ┃┫┫ ┃┫┫
// ┗┻┛ ┗┻┛

希望对大家实用 

最新文章

  1. Java常用的几种集合, Map集合,Set集合,List集合
  2. java 22 - 23 多线程之定时器的概述和使用例子
  3. (C#) 求两个数组的交集
  4. BZOJ2460 [BeiJing2011]元素
  5. stm32 dac 配置过程
  6. poj1742 多重背包的可行性问题
  7. Linux CentOS7 安装 Mysql5.7.19
  8. tp框架的MVC模式
  9. Windbg分析高内存占用问题
  10. Snapde电子表格编写Exprtk脚本进行数据运算
  11. C语言博客作业04--数组
  12. java中xxe漏洞修复方法
  13. 去掉win7快捷方式小箭头
  14. vant的坑
  15. Linear SVM和LR的区别和联系
  16. talk is cheap, show me the code——dcgan,wgan,wgan-gp的tensorflow实现
  17. start-stop-daemon 启动停止系统守护进程
  18. bzoj P4825 [Hnoi2017]单旋——solution
  19. (转)构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(5)-EF增删改查by糟糕的代码
  20. BZOJ 4276 [ONTAK2015]Bajtman i Okrągły Robin 费用流+线段树优化建图

热门文章

  1. swift语言实现单例模式
  2. 如何使用屏幕取色工具ColorPixl
  3. 基于Teigha.Net实现CAD到SHP的转换方案
  4. win10系统80端口被占用怎么办?
  5. cmd获取批处理文件所在路径
  6. 解决 只能通过chrome网上应用商店安装该程序
  7. 从Java的堆栈到Equals和==的比較
  8. 读源码 | metisMenu侧边栏插件
  9. Centos5, 6, 以及Ubuntu18.04下更改系统时间和时区
  10. PHP-Ajax跨域解决方案