Два контент-провайдера обращаются к одной и той же базе данных - PullRequest
3 голосов
/ 30 января 2011

Привет всем!

Интересно, существует ли вообще предпочтительная парадигма реализации, которую нужно соблюдать, если нужно, чтобы два совершенно разных приложения Android имели доступ и работали в одной базе данных? Рекомендуется или вообще технически возможно сделать это вообще? Как будет выглядеть такая архитектура?

На данный момент я собираюсь позволить двум приложениям реализовывать свои собственные ContentProvider s (оба ContentProvider s будут обращаться к одной и той же базе данных, хотя гарантировано никогда не будет одновременно). Я также думал о создании единого поставщика контента и позволил обоим приложениям использовать его при доступе к базе данных. Я предпочитаю первый пример, но не полностью отказался от более позднего.

ОБОСНОВАНИЕ:
У меня есть два приложения, которые должны получить доступ к общей базе данных. Сама база данных хранит данные, но также описывает отношения между строками данных, как правило, описывая набор «форм», где находится содержимое формы; Элементы пользовательского интерфейса, такие как текстовые поля, кнопки и различные виды списков, можно настраивать. Оба приложения используют эти «данные описания» в базе данных для генерации частей соответствующего пользовательского интерфейса приложения во время выполнения.

Следовательно, есть два аспекта этих двух приложений: один «административный» аспект (управление структурой данных и взаимосвязью между строками данных) и один «общий пользовательский» аспект (чтение / изменение фактических значений данных). Это сознательный выбор для разделения этих двух аспектов в отдельных приложениях.

ПРИМЕЧАНИЕ! Значения данных отделены от структуры данных, то есть значения хранятся в одной отдельной таблице, а структура описана в другой таблице. , Это означает, что эти два приложения по существу изменят две разные таблицы в одной и той же базе данных и никогда не изменят, так сказать, «другую таблицу».

Любые мысли очень ценятся. Приложение еще находится на стадии планирования, поэтому сейчас самое время внести фундаментальные изменения.

1 Ответ

1 голос
/ 30 января 2011

ДБМ,

Да, это принято, поощряется и возможно делать на Android.У вас есть 3-й вариант (который, без сомнения, даст мне горячие комментарии), и это позволяет поместить ContentProvider (1) в APK-файл.Но, учитывая, что у вас есть только 2 типа, вы можете перевернуть четверть, в которой apk он находится.Я бы выбрал приложение администратора, но это субъективно с моей стороны.

Если у вас возникнут проблемы с созданием двух приложений, у вас есть «априорные» знания о том, что будет делать поведение каждого,какие данные, что каждый может работать.Поэтому я хотел бы заключить один интерфейс CP и ограничить то, что каждое приложение вызывает, учитывая поведение, которое вы описали.

Frank

...