美文网首页
Android-->Realm数据库使用注意事项

Android-->Realm数据库使用注意事项

作者: angcyo | 来源:发表于2017-04-27 08:51 被阅读169次

    不知不觉Realm已经更新到2.2.2了.
    Realm Java 2.2.2

    但是,还有多少坑等着你呢?

    以下写一些我遇到的坑:


    1:Realm需不需要close呢?

    当你每次调用 Realm.getDefaultInstance(); 的时候, Realm的引用计数就会+1.
    也就是说, close()方法调用次数也要+1, 才能释放Realm资源.

    Realm再调用close之后, 对应线程上where查询出来的结果数据, 会被清空.
    比如, realm.where(User.class).findAll(). 得到了一个集合, 当你close之后,
    集合中的user对象的所有字段数据都会失效.

    原因就是, Realm使用的是代理的方法得到字段的值, 也就是你必须要通过get方法返回字段的值
    才有效. 如果你直接通过成员是访问不到数据的.

    这样做了,也就很容易实现realm的数据变换监听事件通知了.

    所以: 如果你需要一直保持对查询出来的数据引用的话, 请不要close. 否则数据全部会失效.
    如果你既想close, 又想数据有效. 那么请new一个对象, 并且调用get方法set方法, 读取和设置数据
    切记不可 直接访问成员变量读取数据字段值....这样是会返回null的.

    总结一下:
    从Realm数据库中通过where查询出来的对象user.
    1:在调用close()方法之后, user对象会处于无效状态, 此时调用get方法会报异常.
    2:直接通过user.成员变量的方式, 读取到的数据是null. 必须通过get方法才能拿到数据.


    后续补充....


    至此: 文章就结束了,如有疑问: QQ群:274306954 欢迎您的加入.

    相关文章

      网友评论

          本文标题:Android-->Realm数据库使用注意事项

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