HawK数据库框架原理剖析与使用

Hawk介绍

Hawk是Android应用开发中非常便捷的数据库框架

  • 简单的 key-value 数据库
  • 能存任何数据类型
  • 操作数据库只需一行代码
  • AES/BASE64 加密
  • 选择使用SharedPreferences 或者 SQLite

Hawk架构图

image.png

Hawk原理剖析

问题:
如何做到存储所有类型数据?

image.png
image.png

Hawk使用方法

1.在gradle中进行配置

    repositories {  maven { url "https://jitpack.io" }  } 
    dependencies {   compile 'com.github.orhanobut:hawk:1.21'}

2.初始化Hawk,只需要在应用初始化一次,如在onCreate()里

    Hawk.init(this)  
        .setEncryptionMethod(HawkBuilder.EncryptionMethod.MEDIUM) 
        .setStorage(HawkBuilder.newSqliteStorage(this))//存储方式
        .setLogLevel(LogLevel.FULL)  
        .build();

存储方式或为

 HawkBuilder.newSharedPrefStorage(this)

3.数据操作
存数据

      Hawk.put(key, T); / Hawk.chain().put(key1,T).put(key2,T).commit();
eg:             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", Map<Foo,Foo>); // save map

取数据

T result = Hawk.get(key); / T result = Hawk.get(key, T);
eg:            
boolean value = Hawk.get(key);
List<String> value = Hawk.get(key);
List<Foo> value = Hawk.get(key);

移除数据

Hawk.remove(key); / Hawk.remove(keys); 

判断是否包含某个key

boolean contains = Hawk.contains(key);

推荐阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 10,630评论 1 32
  • 任何一个应用程序,其实说白了就是在不停地和数据打交道,我们聊QQ、看新闻、刷微博,所关心的都是里面的数据,...
    AndYMJ阅读 1,375评论 2 5
  • 作为一个完成的应用程序,数据存储操作是必不可少的。因此,Android系统一共提供了四种数据存储方式。分别是:Sh...
    AiPuff阅读 401评论 0 0
  • 点击查看原文 Web SDK 开发手册 SDK 概述 网易云信 SDK 为 Web 应用提供一个完善的 IM 系统...
    layjoy阅读 11,790评论 0 15
  • 昨天(2017年11月3日)在我们单位“院士科创中心”聆听了著名科学家梁平院士关于毫米波通讯的讲座,这是本人第一次...
    思进践变阅读 581评论 0 0