【问题标题】:Realm - Share Database between AppsRealm - 在应用程序之间共享数据库
【发布时间】:2015-03-10 14:51:18
【问题描述】:

所以我有一个由 3 个 APK/应用程序组成的应用程序。如何在应用程序之间共享数据库?我假设它目前在应用程序之间不可见的原因是因为它们在不同的上下文中传递。

谢谢

【问题讨论】:

  • Content Provider 将完成这项工作
  • @hrskrs 内容提供者是否与 Realm 一起使用?
  • 不知道。检查this link也许它可以帮助你找到这个答案

标签: java android database realm


【解决方案1】:

来自Realm的Christian。 目前,您所要求的确实不可行。正如其他人指出的那样,实际上只有两种方法。

1) 公开一个 ContentProvider。但是,这需要您将 RealmResults 映射到 Cursor,这并非易事。我们计划在未来公开一个 RealmCursor,但其他事情优先,所以我们还没有查看细节。

2) 将 Realm 数据库放在共享位置,让应用程序从那里读取。这听起来像是一种简单的方法,但不幸的是,Realm 还不支持多个进程(多个应用程序需要同时打开同一个 Realm 文件)。所以现在你必须在你的应用程序中实现一个锁定方案,以便他们可以决定谁可以打开文件。

所以现在,答案是:你可以,但它需要很多技巧,所以不推荐。积极的一面是,我们意识到了这一点,并且至少正在积极地对 atm 进行多进程支持。

【讨论】:

  • 我希望它很快!这肯定会使 Realm 高于其他 ORM。我决定在不使用 Realm 的情况下采用 ContentProvider 方式。
  • 多进程已被提及为一个限制,我们实际上已经接近发布初步的游标支持:github.com/realm/realm-java/pull/1090
  • @ChristianMelchior 还是这样。诸如开发 App Widget 和在应用之间共享数据之类的事情仍然无法实现?
  • @ChristianMelchior 你们现在有 RealmCursor 了吗??
【解决方案2】:

我认为共享同一个数据库是不可能的, 但您可以尝试以下方法:

  1. 将文件保存在特定目录中并与您的应用程序一起使用。
  2. 在服务器端使用您的数据库并使用 xml/json 读取结果。

【讨论】:

    【解决方案3】:

    blog post 解释了如何在 iOS 上实现对此的支持,并在底部提供以下关键信息。

    您可以在 Realm Swift v0.92 及更高版本(下载最新版本,或阅读文档)和 Realm Objective-C v0.91 及更高版本(下载最新版本,或阅读文档)中使用进程间通信。

    恐怕我不知道 Android 的状态。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-04
      • 1970-01-01
      • 2018-11-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多