我正在构建一个应用程序,我需要在其中使用数据库。我正在考虑使用Room,因为它现在是新的和热门的。但是我也听说过很多关于Realm的好东西。有人能指出使用每种产品的可能优势吗?
我做了我的研究并阅读了文档,但我没有自己理解它的经验
修改:
已经有一段时间了,我可以指出使用Room的另一个原因。虽然您可以使用Realm和Transformations来与LiveData绑定,但是使用Room,您可以直接为DB返回LiveData(以及使用插件的RXJava类型),这将为您节省一些样板代码和头痛。
答案 0 :(得分:58)
域
一个相对快速和方便的库,所有链接都是简单实现的,这与数据库的面向对象有关。优秀的文档。也许是目前在移动设备上存储数据的最佳选择之一,负数只能是apk文件大小增加2.5 MB。
间
Google I / O 2017上提供的一个有趣的解决方案,是在Android操作系统上使用数据库的最佳选择。尽管有必要使用显式的sql-requests,但是这个库非常方便,我个人喜欢它。在性能方面处于领先地位,所以我建议你选择这个特定的库。这方面的一大优势是基于内置的SQLite数据库。自从谷歌提交这个解决方案以来,它将很快变得流行,因此,找到与其一起出现的问题的解决方案将没有问题。
Realm使用更多RAM并增加apk大小,构建时间。所以我更喜欢Room。
答案 1 :(得分:8)
我们推动使用数据库库的主要原因是它让我们模拟我们的对象并使CRUD更容易,我有Realm的良好体验,它很容易设置和工作,它快速而灵活,但是库的大小是一个问题,可以通过在构建目标ABI上拆分APK来减少APK大小,但我更喜欢使用GreenDao因为它基于SQLite,尽管我认为它有一些像任何其他库一样的缺点,但它对我来说是最好的选择。
老实说,我没有尝试过Room,但简单地看一下这些文档,你会发现它对开发人员来说更灵活和友好。作为谷歌粉丝,我更喜欢使用谷歌人的库!正如我之前所说,我更喜欢层而不是原生SQLite 到全新的数据库。
我将在我的下一个项目中尝试Room,并在稍后的更新中分享我的经验,希望它有所帮助。