Hawk数据存储工具,使用超简单,可以替代SharePreference,作为本地存储。Hawk是一个非常便捷的数据库。 操作数据库只需一行代码 , 能存任何数据类型 。Github地址

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 {  implementation 'com.github.orhanobut:hawk:1.21'
}  

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

// Sqlite
.setStorage(HawkBuilder.newSqliteStorage(this))  // SharedPref
.setStorage(HawkBuilder.newSharedPrefStorage(this))  

(三) 存数据

// Returns the result as boolean
Hawk.put(key, T); 

您还可以通过使用链功能存储多个项目。记得在最后使用commit()。

// Returns the result as boolean
Hawk.chain()  .put(KEY_LIST, List<T>)  .put(KEY_ANOTHER,"test")  .commit();  

(四) 取数据

T result = Hawk.get(key);  // 当为null的时候设置默认值
T result = Hawk.get(key, T);  

(五) 移除数据

// Returns the result as boolean
Hawk.remove(key); // 同时移除多个数据
// Returns the result as boolean
Hawk.remove(KEY_LIST, KEY_NAME); 

(六) 判断是否包含某个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 输出:

// as default it is NONE
Hawk.init(context,PASSWORD, LogLevel.FULL); 

Hawk 支持 buildRx最近非常火的RxJava,如果使用也请导入  如果不需要Rx的功能 移除掉相应源码不会有影响。

混淆:

#Gson
-keep class com.google.gson.** { *; }
-keepattributes Signature

Android之Hawk数据库相关推荐

  1. android开源数据库,Android Hawk数据库 github开源项目

    Android Hawk数据库 github开源项目 Hawk 是一个很便捷的数据库  . 操作数据库仅仅需一行代码 , 能存不论什么数据类型 . github 地址: https://github. ...

  2. Android Hawk数据库的源码解析,Github开源项目,基于SharedPreferences的的存储框架

    今天看了朋友一个项目用到了Hawk,然后写了这边文章 一.了解一下概念 Android Hawk数据库github开源项目 Hawk是一个非常便捷的数据库.操作数据库只需一行代码,能存任何数据类型. ...

  3. android中的数据库操作(SQLite)

    android中的数据库操作 android中的应用开发很难避免不去使用数据库,这次就和大家聊聊android中的数据库操作. 一.android内的数据库的基础知识介绍 1.用了什么数据库   an ...

  4. Android 借助Stetho在Chrome上调试Android网络、数据库、Sharedpreferences

    Android 借助Stetho在Chrome上调试Android网络.数据库.Sharedpreferences 转载请标明出处:http://blog.csdn.net/zhaoyanjun6/a ...

  5. 【转】Android开发之数据库SQL

    android中的应用开发很难避免不去使用数据库,这次就和大家聊聊android中的数据库操作. 一.android内的数据库的基础知识介绍 1.用了什么数据库 android中采用的数据库是SQLi ...

  6. Android高性能ORM数据库DBFlow入门

    DBFlow,综合了 ActiveAndroid, Schematic, Ollie,Sprinkles 等库的优点.同时不是基于反射,所以性能也是非常高,效率紧跟greenDAO其后.基于注解,使用 ...

  7. android不同机型编译不同so,如何使用adb命令查看android中的数据库

    1,进入到控制台中,输入adb shell,进入到命令模式的环境中 2,输入:cd /data/data/ 3, 选择你所在的数据库文件,比如我的com.android.homework, 输入命令: ...

  8. 在脚本中, 使用sqlite3检查android程序生成的数据库是否OK

    # # 检验sqlite3是否可用 # sqlite3ver=`sqlite3 --version > /dev/null 2>&1` sqlite3_ok="yes&q ...

  9. Android短信数据库简析

    如果想跳过数据库介绍,直接看数据库操作代码的话,请点击这里: 读取Android短信 -------------– Android短信数据库: 读取Android系统所有短信 读取Android短信会 ...

最新文章

  1. python绘制分组条形图_python中分组值的条形图
  2. 网络编程模型 / Reactor
  3. C# MongoDB简单增删改查使用
  4. php server自定义函数,php:SQL Server用户自定义的函数种类详解
  5. 第三章:学生管理模块
  6. Android读取电话薄中的电话号码
  7. c数据库读写分离和负载均衡策略
  8. StylesheetLanguage--如何使用Less--前端样式语言
  9. Android 设置背景透明度
  10. 当安装完Windows系统后出现“系统保留”分区该怎么办?
  11. The Plant Journal | DAP-seq助力揭示乌龙茶树杂种优势形成的分子机制
  12. 判断听云是否正常嵌入及注意事项
  13. 学习光线追踪(16)---折射计算[1]
  14. 洛谷 P3387(缩点后+处理 )
  15. 在opencv2.4.x版本中处理图像EXIF orientation不统一的问题
  16. winform ui 设计参考
  17. 项目外包网Elance承包商使用手册中文版
  18. python自动更新pom文件
  19. 从RTE2022大会 看声网实时互动生态的未来
  20. 问大家个问题,关于接单子的问题

热门文章

  1. 算法导论 chapter4
  2. 批量图片采集编辑压缩工具
  3. Qt编写可视化大屏电子看板系统25-模块3设备监控
  4. 表格练习(工商银行电子汇款单)表单练习(用户注册)
  5. FFmpeg之sws_scale库的应用(sws_getContext、sws_scale、sws_freeContext)
  6. bios如何设置关闭触控板功能?
  7. LocalDB的使用详解
  8. 07 Python数据类型详解
  9. linux debian教程,Debian安装全攻略
  10. 基层社会治理综合管理平台智慧街道Java商业源码