美文网首页
Android Hawk用法小结

Android Hawk用法小结

作者: 无敌未央様 | 来源:发表于2019-07-15 11:22 被阅读0次

    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'
    }
    

    (二) 初始化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.delete(key); // 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功能

    原文地址

    相关文章

      网友评论

          本文标题:Android Hawk用法小结

          本文链接:https://www.haomeiwen.com/subject/azggkctx.html