Первые шаги в архитектуре Android - помогите мне избежать большой ошибки - PullRequest
3 голосов
/ 09 декабря 2011

Я относительно опытный разработчик .NET / iOS, делающий первые шаги в разработке Android - чтобы помочь мне избежать неправильного пути, я был бы благодарен за некоторые рекомендации:

По сути, у меня естьприложение, которое отображает местоположения на карте / в списке.Когда пользователь прокручивает карту, местоположения выбираются из веб-службы JSON.Можно указать местоположение, после чего вызывается другая веб-служба JSON для получения оперативной информации для этого местоположения.Затем отображается текущая информация.

Итак, прочитав различные документы по началу работы с Android, я бы подумал, что мне нужно:

  1. Упражнение для отображения основного вида картыthe location
  2. Второй вид деятельности для отображения списка?Это кажется странным, поскольку у меня складывается впечатление, что каждое действие должно быть целым экраном приложения.Я хотел бы сохранить другие элементы пользовательского интерфейса.(например, кнопка для переключения видов, кнопка для настроек и т. д.) Возможно ли это?
  3. Служба (или IntentService?) для получения местоположений из Интернета.Как он должен сообщать Activity и ContentProvider, когда новые местоположения были извлечены - посредством широковещательных рассылок, или они должны связываться с ним?
  4. ContentProvider, чтобы кэшировать и сохранять мои местоположения.Возможно, контент-провайдер должен транслировать действия, когда новые данные доступны для отображения?

Ваша помощь будет очень признательна, так как я чувствую себя немного растерянным!

Карлос

PS: я буду разрабатывать с Mono для Android, если только многие не будут советовать против

Ответы [ 3 ]

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

1.Вы можете использовать MapActivity для просмотра карты;

2.Используйте Activity и поместите listView, чтобы включить кнопку в одном представлении вместо ListActiviy

3. Пожалуйста, перейдите по ссылке для учебника по обновлению местоположения

http://www.vogella.de/articles/AndroidLocationAPI/article.html

4.используйте технику наложения карты для отображения вашего сообщения

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

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

Активность для отображения основного вида карты локаций

Да

Второй вид деятельности для отображения списка? Это кажется странным, так как я создается впечатление, что каждое действие должно быть целым экраном приложение. Я хотел бы сохранить другие элементы пользовательского интерфейса. (например, кнопка для переключение видов, кнопка настроек и т. д.) Возможно ли это?

Не обязательно так. Взгляните на Фрагменты API . Это позволяет вам переключать только части вашего пользовательского интерфейса. Он был представлен в Android 3.0, но существует официальный бэкпорт, так что вы также можете использовать его в предыдущих версиях Android.

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

Служба (или IntentService?) Для получения местоположений из Интернета. Как это должно сообщить Activity и ContentProvider, когда новый местоположения были найдены с помощью трансляций или должны быть привязаны к это?

Я бы настоятельно советовался против этого. Вы должны использовать сервис, если у вас есть длительные загрузки в фоновом режиме, такие как загрузка файла или что-то. Краткосрочные запросы JSON могут и должны обрабатываться в процессе пользовательского интерфейса. Для этого используйте AsyncTask или Executor . Google советовал помещать почти все ваши запросы в службу, но, поверьте мне, это бык.

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

Не требуется. Вам действительно нужен ContentProvider, если вы планируете сделать ваш контент доступным для других Приложений или Системы. Для HTTP-кэширования вы можете напрямую обращаться к базе данных / файловой системе или, что еще лучше, использовать Apache HTTP Client Cache . Хорошо работает, если вы используете уже встроенный HTTP-клиент Apache, что вам и нужно.

1 голос
/ 09 декабря 2011
  1. Пункты 1 и 2: Вы можете использовать Фрагменты для обновления части экрана, Activity будет действовать как контейнер для нескольких фрагментов (используйте библиотеку совместимости для обратного переноса фрагментов на уровень API 10 или ниже

  2. Вы должны использовать AsyncTask вместо службы для получения местоположений от удаленного веб-сервиса

  3. AsyncTask имеет обратный вызов onPostExecute (..), который будетвызываться при завершении удаленной выборки, это можно использовать для обновления списка, карт или фрагментов

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