请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

老师,能详细的解释下不用realm的原因吗?

问题补充(选填):请详细描述你的问题,贴出相关代码或截图,并告知你的操作步骤

正在回答

1回答

对于这个问题我想很多朋友都有疑问,因为现在市场来说很多人都在吹Realm多好多好,对吧?

其实Realm在初始的时候我就再进行尝试了,但是后来也发现了诸多问题,其一:无法继承(官方说后面更改,但是1年多了似乎没有动)

好了咱们言归正传。

Realm 集中的内存查询的性能上,但是realm本身是比较消耗内存的,这是其一。其二就是realm查询后的数据,无法对数据进行直接跨线程的更改,因为Realm的数据是线程绑定的,跨线程会报错。

这意味着,如果是回到主线程的数据我需求更改会非常麻烦;如果数据量很大,同时我也需要对数据进行二次加工,理论上此时就不能直接进行循环处理,必须放倒子线程中处理,因为数据逻辑处理会导致阻塞UI。但是Realm又不支持跨线程处理,所以我就只能先循环完全copy一份非线程绑定数据传输给子线程再处理了,这样的方式情况下Realm毫无优势。

在这样的情况下realm并不支持局部数据的更新,因为无法进行直接对比数据,也就意味着查询数据到显示必须更新整个Recyclerview,而无法做到局部刷新。


最初我是使用的Realm进行处理,但是项目做到80%的时候发现无法达到我的要求,所以狠心替换了。

realm 很优秀,可以关联查询,也能观察者通知,同时可以进行数据的增量绑定,但是缺点也非常明显,适合做一些简单的数据存储,和刷新,比如新闻类的app;但是不适合做复杂数据的处理,可定制性太弱。


比较数据库框架 不能只是从数据查询速度层面比较,还应该根据实际的业务需求进行审核。咱们的业务比较复杂也比较多,如果使用Realm反而成为累赘;所以我们不采用Realm。

1 回复 有任何疑惑可以回复我~
  • 提问者 rxj131530 #1
    非常感谢!
    回复 有任何疑惑可以回复我~ 2017-05-27 11:06:37
  • 提问者 rxj131530 #2
    老师解释的太好了,之前也在网上查了一些资料 也只是说了realm在性能上多好并没有人说有什么缺点,经过老师的讲解 ,这回彻底明白了其中的差别
    回复 有任何疑惑可以回复我~ 2017-05-27 11:11:47
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信