Подход к дизайну: Android Restful с JSON - PullRequest
3 голосов
/ 16 декабря 2011

Я разрабатываю систему парковки, где мобильное устройство запрашивает данные парковки из базы данных сервера.Другими словами, пользователь запрашивает пустое место для парковки, и сервер отправляет ему номер свободного места на своем устройстве.Я использую спокойную архитектуру с JSON.

Я смотрел видео с клиентскими приложениями Google I / 0 2010, и он объяснил, что вы можете использовать 3 шаблона проектирования:

  1. СервисAPI
  2. contentprovider API
  3. contentprovider & syncadapter

Я не могу решить, какой из этих 3 подойдет лучше всего для моего приложения, есть ли у кого-нибудь полезныеподсказки / знания?

Любая помощь с благодарностью!

Ответы [ 2 ]

3 голосов
/ 16 декабря 2011

Я реализовал решение, используя предложения из этого сеанса ввода-вывода Google, и оно мне очень помогло.

Для извлечения данных с удаленного сервера обязательным является фоновый поток, поскольку вы не можете заблокировать поток пользовательского интерфейса, ожидая ответа от сервера. Самый простой способ сделать это - AsyncTask, который получает данные с сервера в doInBackground, а затем выполняет любые обновления пользовательского интерфейса или сохранение данных, которые должны произойти в onPostExecute. Этот подход будет работать достаточно хорошо для многих случаев использования, но проблема, на которую обращался сеанс ввода-вывода Google, заключалась в том, что вы потеряете данные, если ваша активность будет прервана во время ожидания ответа от сервера. Решения, предложенные на этом сеансе, представляли собой способы сохранить данные, чтобы их можно было хранить так, чтобы они не были привязаны к действию.

Используя Сервис, вы можете отделить получение данных от Действия. (Имейте в виду, что вам все равно нужно будет создать отдельный поток в Сервисе для извлечения данных, поскольку Сервис все еще работает в потоке пользовательского интерфейса.) ContentProvider вступает в игру при передаче информации из Сервиса в Активность, которая запросила данные сервера. Вы можете использовать базу данных для хранения ответа. Затем Activity может получить ответ из базы данных.

SyncAdapter может использоваться для повторения неудачных серверных вызовов и / или получения данных с сервера без специального запроса приложения, поэтому он будет свежим и готовым, когда оно потребуется приложению. Конечно, это действительно следует использовать очень экономно, так как это может немного разрядить аккумулятор.

Я бы настоятельно рекомендовал, по крайней мере, придерживаться подхода Service / ContentProvider. Я смог использовать это решение, чтобы легко интегрировать механизм кэширования и в мое приложение.

Надеюсь, это поможет.

1 голос
/ 16 декабря 2011

Сервис точно.Я предполагаю, что вы хотите, чтобы это было полупостоянное обновление, которое информирует пользователя об открытом пятне и меняет его, если пятно закрыто.Служба лучше всего подходит для работы в фоновом режиме в ожидании отправляемых вами данных JSON.

ContentProvider и SyncAdapter. Я считаю, что они обрабатывают только данные на телефоне, поэтому я не уверен, почему вы захотите использоватьте.

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