不知不觉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 欢迎您的加入.
网友评论