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<String>); // save listHawk.put("key", List<Foo>); // save listHawk.put("key", Map<Foo,Foo>); // save mapHawk.put("key", Set<Foo>); // 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<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 并且需要你提供密码

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

(七) 设置密码

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. 箭头函数的基础使用
  2. NPM 和webpack 的基础使用
  3. Python list sort方法的具体使用
  4. 【阿里云镜像】使用阿里巴巴DNS镜像源——DNS配置教程
  5. Android(安卓)AIDL使用详解
  6. android 单选按钮组的使用
  7. Material Design:利用RecyclerView CardView实现新闻卡片样式
  8. 对android LinearLayout中layout_weight属性使用
  9. Android(安卓)Studio使用说明

随机推荐

  1. 计算机网络 划分子网&&构造超网
  2. 计算机网络 网际控制报文ICMP
  3. 总结Java中创建并写文件的5种方式
  4. Python学习之Pandas和Numpy的区别!
  5. 软硬结合,CDS首云AI云服务的技术实践
  6. 浅谈数据迁移
  7. Python常用数据分析库有哪些?Python学习
  8. 苹果Mac图片批量压缩重命名添加水印工具:P
  9. 信创稳妥落地,一云多芯协同是唯一答案!
  10. 20210508 字符串的格式化输出