Realm - 在应用程序之间共享数据库
Realm - Share Database between Apps
所以我有一个由 3 个 APK/Apps 组成的应用程序。如何在应用程序之间共享数据库?我假设它目前在应用程序之间不可见的原因是因为它们在不同的上下文中传递。
谢谢
我认为共享同一个数据库是不可能的,
但你可以试试这些方法:
- 将文件保存在特定目录中并将其用于您的应用程序。
- 在服务器端使用您的数据库并读取 xml/json 结果。
这里是 Realm 的基督徒。
目前你问的确实不可行。正如其他人指出的那样,实际上只有两种方法。
1) 公开一个 ContentProvider。但是,这需要您将 RealmResults 映射到 Cursor,这不是一件容易的事。我们正计划公开一个 RealmCursor,但其他事情有优先权,所以我们还没有查看细节。
2) 将 Realm 数据库放在共享位置,让应用程序从那里读取。这听起来像是一种简单的方法,但不幸的是,Realm 尚不支持多进程(多个应用程序需要同时打开同一个 Realm 文件)。所以现在你必须在你的应用程序中实施锁定方案,以便他们可以决定谁可以打开文件。
所以现在,答案是:你可以,但它需要很多技巧,所以不推荐。从积极的方面来说,我们意识到了这一点,至少 atm 正在积极地支持多进程。
此 blog post 解释了如何在 iOS 上实现对此的支持,并在底部包含以下关键信息。
You can use Inter-Process Communication in Realm Swift v0.92 onwards (download the latest version, or read the docs), and Realm Objective-C v0.91 onwards (download the latest version, or read the docs).
恐怕我不知道 Android 状态。
所以我有一个由 3 个 APK/Apps 组成的应用程序。如何在应用程序之间共享数据库?我假设它目前在应用程序之间不可见的原因是因为它们在不同的上下文中传递。
谢谢
我认为共享同一个数据库是不可能的, 但你可以试试这些方法:
- 将文件保存在特定目录中并将其用于您的应用程序。
- 在服务器端使用您的数据库并读取 xml/json 结果。
这里是 Realm 的基督徒。 目前你问的确实不可行。正如其他人指出的那样,实际上只有两种方法。
1) 公开一个 ContentProvider。但是,这需要您将 RealmResults 映射到 Cursor,这不是一件容易的事。我们正计划公开一个 RealmCursor,但其他事情有优先权,所以我们还没有查看细节。
2) 将 Realm 数据库放在共享位置,让应用程序从那里读取。这听起来像是一种简单的方法,但不幸的是,Realm 尚不支持多进程(多个应用程序需要同时打开同一个 Realm 文件)。所以现在你必须在你的应用程序中实施锁定方案,以便他们可以决定谁可以打开文件。
所以现在,答案是:你可以,但它需要很多技巧,所以不推荐。从积极的方面来说,我们意识到了这一点,至少 atm 正在积极地支持多进程。
此 blog post 解释了如何在 iOS 上实现对此的支持,并在底部包含以下关键信息。
You can use Inter-Process Communication in Realm Swift v0.92 onwards (download the latest version, or read the docs), and Realm Objective-C v0.91 onwards (download the latest version, or read the docs).
恐怕我不知道 Android 状态。