Модели баз данных и веб-сервисов - PullRequest
3 голосов
/ 20 августа 2010

Я смотрю видео Google I / O 2010 по этой теме, и у меня есть несколько вопросов, чтобы убедиться, что я правильно понимаю.

Google I / O 2010 - клиентские приложения REST для Android

Обратите внимание, что у меня также очень ограниченное понимание CursorAdapters

В настоящее время мое приложение просто имеет слой пользовательского интерфейса.Я создал объект с именем DbAdapter, используя некоторые учебные пособия Google для создания небольшой базы данных и таблицы в этой базе данных.

Я создал класс, которому я вызываю DataBroker (расширение ContentProvider) для управления извлечением данных избаза данных и вызов веб-служб для обновления данных.

Сценарии:

1) Предположим, я хочу отобразить список элементов в моей ListActivity.Правильно ли я предполагаю, что напишу функцию в моем DataBroker, которая создает курсор для таблицы в моей базе данных, содержащей эти элементы, запускает службу, которая запускает поток, который вызывает веб-службу для получения дополнительных элементов, а затем возвращает курсорв мой поток пользовательского интерфейса?Выполнение этого, вероятно, вернет Cursor в мой поток пользовательского интерфейса до завершения работы веб-службы, но, как я предполагаю, когда CursorAdapter имеет Cursor, он автоматически покажет все изменения, внесенные в эту таблицу базы данных, да?

2) Теперь у меня есть список элементов в моем ListView.Предположим, я даю пользователю некоторую функциональность для удаления элемента.Пользователь выполняет эту функцию.Он должен вызвать функцию в моем DataBroker, которая обновит строку в моей базе данных, соответствующую этому элементу, установив для столбца состояния значение STATE_DELETING (которая удалит строку из ListView, поскольку у Cursor есть предложение, исключающее это состояние), а затем сработаетслужба, которая запускает поток, который попадает в мой веб-сервис, а затем удаляет строку в базе данных после завершения?

Кроме того, предположим, что у меня есть несколько операций, я смотрю на наличие статического курсора для каждого действия со списком,захватывает этот Курсор в onCreate Деятельности, и если этот Курсор является нулем, поражает мой DataBroker?

1 Ответ

1 голос
/ 15 сентября 2010

Поскольку никто не ответил, я отвечу тем, что я сделал (и, кажется, работает)

Следует отметить, что я переименовал DataBroker.Мой ContentProvider теперь называется каким-то другим именем, и у меня теперь есть расширенный Сервис, который я назвал DataBroker.

1) Я не делаю свой запрос курсора внутри Сервиса.Я вызываю Курсор в Деятельности, а затем вызываю Сервис (DataBroker), чтобы запросить у веб-сервиса новые данные.Если новые данные найдены, DataBroker передает сообщение, полученное любым прослушиванием Activity, и Activity затем повторно запрашивает курсор.

2) Я передаю через Intent идентификатор строки, которую необходимо удалить.в мой сервис (DataBroker).Служба помечает столбец состояния для этого идентификатора как STATE_DELETING, использует веб-службу, чтобы сообщить моему серверу, что строка была удалена, и, в случае подтверждения сервером, затем удаляет строку из моей базы данных.Кроме того, после того, как строка помечена как STATE_DELETING, я передаю сообщение, на которое могут подписаться любые заинтересованные действия, сообщая им, что я это сделал.Таким образом, Activity может повторно запросить свой Cursor (который не возвращает строки STATE_DELETING).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...