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

希望对大家实用 

Android Hawk数据库 github开源项目的更多相关文章

  1. Android笔记——导入Github开源项目CircleRefreshLayout

    百度n久都找不到android studio导入第三方类库的正确方法,纠结睡不着 ,最后终于蒙到了方法,原来想太多了  ---------------------------------------- ...

  2. 2015-2016最火的Android开源项目--github开源项目集锦(不看你就out了)

    标签: Android开发开源项目最火Android项目github 2015-2016最火的Android开源项目 本文整理与集结了近期github上使用最广泛最火热与最流行的开源项目,想要充电与提 ...

  3. [Android开源项目] GitHub开源项目总结 (转)

    [Android开源项目] GitHub开源项目总结 GitHub开源项目android-styled-dialogs http://neast.cn/forum.php?mod=viewthread ...

  4. 开源项目福利-github开源项目免费使用Azure PipeLine

    微软收购Github后,很多人猜想微软可能会砍掉VSTS,然而事实VSTS并没有砍掉,关于Azure Devops的详细信息可以查看 这篇博客,如果想查看原文也可以从链接里提供的原始地址里查看. 今天 ...

  5. 基于RBAC模型的权限系统设计(Github开源项目)

    RBAC(基于角色的访问控制):英文名称Rose base Access Controller.本博客介绍这种模型的权限系统设计.取消了用户和权限的直接关联,改为通过用户关联角色.角色关联权限的方法来 ...

  6. iOS:开发常用GitHub开源项目(持续更新)

    IOS开发常用GitHub开源项目(持续更新) 数据类 开源库 作者 简介 AFNetworking Mattt 网络请求库 ASIHTTPRequest pokeb 网络请求库 Alamofire ...

  7. 如何参与一个 GitHub 开源项目?

    最近一年开源项目特别的热,很多技术大会或论坛都以开源项目作为主题进行探讨,可见这是一种趋势.而Github作为开源项目的著名托管地,可谓无 人不知,越来越多的个人和公司纷纷加入到Github的大家族里 ...

  8. 如何参与一个GitHub开源项目

    Github作为开源项目的著名托管地,可谓无人不知,越来越多的个人和公司纷纷加入到Github的大家族里来,为开源尽一份绵薄之力.对于个人来讲,你把自己的项目托管到Github上并不表示你参与了Git ...

  9. Android二维码开源项目zxing用例简化和生成二维码、条形码

    上一篇讲到:Android二维码开源项目zxing编译,编译出来后有一个自带的測试程序:CaptureActivity比較复杂,我仅仅要是把一些不用的东西去掉,用看起来更方便,二维码和条形码的流行性自 ...

随机推荐

  1. 【PHP 】 伪静态 - 3. 伪静态的基本使用

    原理图: 原先浏览器输入的网址会发送到apache服务器,然后apache会调用php模块来处理,最后找到你所想访问的页面; 如果在apahce, httpd.conf文件中开启rewrite机制,则 ...

  2. 【Nodejs】理想论坛帖子爬虫1.01

    用Nodejs把Python实现过的理想论坛爬虫又实现了一遍,但是怎么判断所有回调函数都结束没有好办法,目前的spiderCount==spiderFinished判断法在多页情况下还是会提前中止. ...

  3. PHP高级教程-文件

    PHP 文件处理 fopen() 函数用于在 PHP 中打开文件. 打开文件 fopen() 函数用于在 PHP 中打开文件. 此函数的第一个参数含有要打开的文件的名称,第二个参数规定了使用哪种模式来 ...

  4. Windows下安装配置SBT

    1:安装包下载界面 http://www.scala-sbt.org/download.html 下载后进行安装. 安装路径:D:\Java\sbt\conf 2:进行配置 (1)sbtconfig. ...

  5. java 设计模式大全

    在线学习网址: http://www.runoob.com/design-pattern/

  6. Guava学习之Preconditions

    在编写程序的时候,很多时候都需要检查输入的参数是否符合我们的需要,比如人的年龄需要大于0,名字不能为空:如果不符合这两个要求,我们将认为这个对象是不合法的,这时候我们需要编写判断这些参数是否合法的函数 ...

  7. IDEA 开发环境中 调试Spark SQL及遇到问题解决办法

    1.问题 java.lang.OutOfMemoryError: PermGen space java.lang.OutOfMemoryError: Java heap space // :: WAR ...

  8. 微软 Visual Studio 2017 中文正式版下载 – 免费社区版/专业版/企业版

    作为“宇宙最强”的集成开发环境 IDE,微软的 Visual Studio 不仅破天荒发布了 macOS 版本,如今终于也推出了其 Windows 的最新版本—— VS 2017 正式版了.这对开发者 ...

  9. CreateThread、_beginthreadex和AfxBeginThread .

    创建线程好几个函数可以使用,可是它们有什么区别,适用于什么情况呢?参考了一些资料,写得都挺好的,这里做一些摘抄和整合. [参考1]CreateThread, AfxBeginThread,_begin ...

  10. [Table] pm_result

    ', '20160501.17:30 - 20160501.17:45', '2.1', '3.1', '3.1', '3.11', '3.44', '12.30', null, null, null ...