Realm — совместное использование базы данных между приложениями

Итак, у меня есть приложение, состоящее из 3 APK/приложений. Как разделить базу данных между приложениями? Я предполагаю, что причина, по которой он в настоящее время не виден между приложениями, заключается в том, что они проходят в разных контекстах.

Спасибо


person Alan    schedule 10.03.2015    source источник
comment
Content Provider выполнит эту работу.   -  person hrskrs    schedule 10.03.2015
comment
@hrskrs Работает ли контент-провайдер с Realm?   -  person Alan    schedule 10.03.2015
comment
не знаю об этом. Проверьте эту ссылку, возможно, это поможет вам найти этот ответ   -  person hrskrs    schedule 10.03.2015


Ответы (3)


Кристиан из Realm здесь. В настоящее время то, что вы просите, действительно невозможно. Как указывали другие, на самом деле существует только два подхода.

1) Разоблачить ContentProvider. Однако это требует от вас сопоставления RealmResults с курсором, что не является тривиальным усилием. Мы планируем опубликовать RealmCursor в будущем, но другие вещи имеют приоритет, поэтому мы еще не рассматривали детали.

2) Поместите базу данных Realm в общедоступное место и разрешите приложениям читать оттуда. Это звучит как простой подход, но, к сожалению, Realm еще не поддерживает несколько процессов (что потребуется, чтобы несколько приложений одновременно открывали один и тот же файл Realm). Так что прямо сейчас вам придется реализовать схему блокировки в своих приложениях, чтобы они могли решать, кто может открыть файл.

Итак, прямо сейчас ответ таков: вы вроде как можете, но для этого требуется много хаков, поэтому на самом деле не рекомендуется. С положительной стороны, мы знаем об этом, и, по крайней мере, поддержка многопроцессорности активно работает над atm.

person Christian Melchior    schedule 10.03.2015
comment
Я надеюсь, что скоро! Это определенно поставит Realm выше других ORM. Я решил пойти по пути ContentProvider без использования Realm. - person Alan; 10.03.2015
comment
Многопроцессорность уже упоминалась как ограничение, и мы фактически очень близки к выпуску предварительной поддержки курсора: github.com/realm/realm-java/pull/1090 - person Christian Melchior; 17.05.2015
comment
@ChristianMelchior Это все еще так. Такие вещи, как разработка виджета приложения и обмен данными между приложениями, все еще невозможны? - person Christopher Rucinski; 05.11.2015
comment
@ChristianMelchior, теперь у вас есть RealmCursor?? - person Kamalakannan J; 27.12.2016

Я не думаю, что совместное использование одной и той же базы данных возможно, но вы можете попробовать следующие способы:

  1. сохраните файл в определенном каталоге и используйте его со своими приложениями.
  2. используйте свою базу данных на стороне сервера и прочитайте результаты с помощью xml/json.
person vlad sol    schedule 10.03.2015

В этом сообщении в блоге объясняется, как реализована поддержка этого на iOS. и имеет следующую ключевую информацию внизу.

Вы можете использовать межпроцессное взаимодействие в Realm Swift версии 0.92 и выше (скачать последнюю версию или прочитать документацию) и Realm Objective-C версии 0.91 и выше (скачать последнюю версию или прочитать документы).

Боюсь, я не знаю статус Android.

person Joseph Lord    schedule 22.05.2015