博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android Hawk数据库 github开源项目
阅读量:2221 次
发布时间:2019-05-08

本文共 3578 字,大约阅读时间需要 11 分钟。

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
); // save listHawk.put("key", List
); // save listHawk.put("key", Map
); // save mapHawk.put("key", Set
); // 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
value = 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'}
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
) .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 

下载地址: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!//   ┃   ┗━━━┓//   ┃       ┣┓//   ┃       ┏┛//   ┗┓┓┏━┳┓┏┛//     ┃┫┫ ┃┫┫//     ┗┻┛ ┗┻┛
希望对大家有用 

你可能感兴趣的文章
Intellij IDEA使用(四)—— 使用Intellij IDEA创建静态的web(HTML)项目
查看>>
Intellij IDEA使用(五)—— Intellij IDEA在使用中的一些其他常用功能或常用配置收集
查看>>
Intellij IDEA使用(六)—— 使用Intellij IDEA创建Java项目并配置jar包
查看>>
Eclipse使用(十)—— 使用Eclipse创建简单的Maven Java项目
查看>>
Eclipse使用(十一)—— 使用Eclipse创建简单的Maven JavaWeb项目
查看>>
Intellij IDEA使用(十三)—— 在Intellij IDEA中配置Maven
查看>>
面试题 —— 关于main方法的十个面试题
查看>>
集成测试(一)—— 使用PHP页面请求Spring项目的Java接口数据
查看>>
使用Maven构建的简单的单模块SSM项目
查看>>
Intellij IDEA使用(十四)—— 在IDEA中创建包(package)的问题
查看>>
FastDFS集群架构配置搭建(转载)
查看>>
HTM+CSS实现立方体图片旋转展示效果
查看>>
FFmpeg 命令操作音视频
查看>>
问题:Opencv(3.1.0/3.4)找不到 /opencv2/gpu/gpu.hpp 问题
查看>>
目的:使用CUDA环境变量CUDA_VISIBLE_DEVICES来限定CUDA程序所能使用的GPU设备
查看>>
问题:Mysql中字段类型为text的值, java使用selectByExample查询为null
查看>>
程序员--学习之路--技巧
查看>>
解决问题之 MySQL慢查询日志设置
查看>>
contOS6 部署 lnmp、FTP、composer、ThinkPHP5、docker详细步骤
查看>>
TP5.1模板布局中遇到的坑,配置完不生效解决办法
查看>>