采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
问题补充(选填):请详细描述你的问题,贴出相关代码或截图,并告知你的操作步骤
对于这个问题我想很多朋友都有疑问,因为现在市场来说很多人都在吹Realm多好多好,对吧?
其实Realm在初始的时候我就再进行尝试了,但是后来也发现了诸多问题,其一:无法继承(官方说后面更改,但是1年多了似乎没有动)
好了咱们言归正传。
Realm 集中的内存查询的性能上,但是realm本身是比较消耗内存的,这是其一。其二就是realm查询后的数据,无法对数据进行直接跨线程的更改,因为Realm的数据是线程绑定的,跨线程会报错。
这意味着,如果是回到主线程的数据我需求更改会非常麻烦;如果数据量很大,同时我也需要对数据进行二次加工,理论上此时就不能直接进行循环处理,必须放倒子线程中处理,因为数据逻辑处理会导致阻塞UI。但是Realm又不支持跨线程处理,所以我就只能先循环完全copy一份非线程绑定数据传输给子线程再处理了,这样的方式情况下Realm毫无优势。
在这样的情况下realm并不支持局部数据的更新,因为无法进行直接对比数据,也就意味着查询数据到显示必须更新整个Recyclerview,而无法做到局部刷新。
最初我是使用的Realm进行处理,但是项目做到80%的时候发现无法达到我的要求,所以狠心替换了。
realm 很优秀,可以关联查询,也能观察者通知,同时可以进行数据的增量绑定,但是缺点也非常明显,适合做一些简单的数据存储,和刷新,比如新闻类的app;但是不适合做复杂数据的处理,可定制性太弱。
比较数据库框架 不能只是从数据查询速度层面比较,还应该根据实际的业务需求进行审核。咱们的业务比较复杂也比较多,如果使用Realm反而成为累赘;所以我们不采用Realm。
非常感谢!
老师解释的太好了,之前也在网上查了一些资料 也只是说了realm在性能上多好并没有人说有什么缺点,经过老师的讲解 ,这回彻底明白了其中的差别
登录后可查看更多问答,登录/注册
客户端+服务端+MVP架构+封装思想+主流框架
1.6k 3
3.0k 6
1.5k 18
1.3k 16
1.4k 16