Главная » Разработка для Android » ДОБАВЛЕНИЕ СЕТЕВОЙ ПОДДЕРЖКИ – ЧАСТЬ 1

0

Вопросы, рассматриваемые в этом часе:

•             проектирование приложений с сетевой поддержкой;

•             асинхронное выполнение задач;

•             работа с индикаторами хода выполнения процесса;

•             загрузка данных с сервера приложения.

В этом и следующем часе вы реализуете поддержку двухстороннего сетевого взаимодействия в приложении «Been There, Done That!». В этом часе вы сосредоточитесь на загрузке данных из Интернета. В частности, вы измените приложение таким образом, чтобы наборы вопросов викторины и актуальные данные о результатах загружались с удаленного сервера приложения.

ПРОЕКТИРОВАНИЕ ПРИЛОЖЕНИЙ С СЕТЕВОЙ ПОДДЕРЖКОЙ

Несмотря на то, что мобильные устройства прошли долгий путь в плане повышения скорости обработки и доступа к данным, связь с серверами по-прежнему важна. Она требуется для обеспечения переноса данных между устройствами, для создания резервных копий, для доступа к базам данных, которые не могут храниться на мобильном устройстве. К счастью, мобильные устройства прошли долгий путь и в плане развития возможностей подключения к вычислительным сетям и Интернету. Многие Android-фоны могут подключаться к Интернету различными способами, включая сети 3G (и более современные версии) или подключения с использованием технологии Wi-Fi. Android- приложения могут использовать многие из наиболее популярных интернет-протоколов, включая протоколы HTTP, HTTPS, TCP/IP и сокеты прямого доступа.

До сих пор в приложении «Been There, Done That!» вы использовали только тестовые XML-данные. Теперь пришло время изменить программу таким образом, чтобы она подключалась к удаленному серверу для получения актуальных данных. Для этого вам нужно познакомиться с сетевыми возможностями, доступными на платформе Android, а также узнать, как можно выносить выполнение задач за пределы основного потока, управляющего пользовательским интерфейсом, и выполнять их асинхронно.

В приложении «Been There, Done That!» загрузка информации с сервера требуется двум классам:

QuizScoresActivity — этому классу требуется загрузка информации о результатах; QuizGameActivity — этому классу требуется загрузка каждого набора с вопросами викторины.

Чтобы приложение «Been There, Done That!» могло обрабатывать актуальные данные, вам потребуется доступ к серверу приложения, а также необходимо добавить сетевую поддержку в клиентское Android-приложение.

КСТАТИ __________________________________________________________________

Полная версия кода, реализующего сетевую поддержку в приложении и рассматриваемого в этом часе, доступна на прилагаемом к книге диске.

Работа с сервером приложения

Приложения с сетевой поддержкой чаше всего связаны с сервером. Сервер обеспечивает централизованное хранение информации (в базе данных) и большую вычислительную мощность. Использование сервера позволяет разработчику использовать клиент- серверную архитектуру, при которой ядро приложения исполняется на сервере, а у клиента только интерфейс для связи с ним. Таким образом мы можем легко реализовать приложение «Been There, Done That!» для устройств iPhone и BlackBerry, а также веб- версии этой программы. В этом случае информация о результатах игры и друзьях пользователей могла бы без проблем использоваться в разнообразных клиентских средах.

Существует множество вариантов разработки сервера приложения. В этом примере используется очень простой масштабируемый сервер на базе платформы Google Арр Engine (дополнительную информацию можно получить по адресу code.google.com/appengine/) с использованием языка Java и сервлетов. Платформа Google Арр Engine помещает всю информацию в хранилище, где структура документов не имеет жесткой регламентации, и поддерживающем механизм запросов и атомарные транзакции. И хотя рассмотрение деталей реализации сервера приложения выходит за рамки данной книги, возможно, вам будет полезно узнать общие характеристики этого сервера.

Представьте, что сервер приложения для данного примера — это черный ящик со следую­щими свойствами:

•             Сервер приложения всегда находится в работоспособном состоянии и доступен пользователям.

•             Удаленный доступ к серверу приложения организуется по протоколу HTTP.

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

•             Сервер приложения может обрабатывать запросы на получение некой информации, например лучших результатов игры или наборов вопросов.

•             Сервер приложения использует технологию Java Server Pages (JSP) для обработки Н^Р-запросов и возвращает соответствующие результаты в XML-формате, который умеет обрабатывать Android-приложение.

КСТАТИ __________________________________________________________________

Код сервера приложения, используемого в этой книге, доступен в папке /Книга/ Сервер на прилагаемом к книге диске.

Вы могли бы создать сервер приложения с другими характеристиками. Например, сервер под управлением базы данных SQL-типа с использованием СУБД MySQL и языка РНР или ряда других технологий.

Информирование пользователя о сетевой активности

В этом часе мы в основном будем знакомиться с механизмом отправки запросов серверу приложения и получения XML-данных, возвращаемых в результате выполнения этого запроса. Реализация сетевой поддержки не требует внесения каких-либо изменений в пользовательский интерфейс или в макеты экранов приложения «Been There, Done That!». Тем не менее каждый раз, когда пользователь должен дожидаться окончания операции, выполнение которой занимает определенное время, — например, операция загрузки с сервера и разбора XML-данных — важно информировать пользователя о том, что в приложении происходят какие-то действия, используя визуальный механизм, например элемент ProgressBar (рис. 15.1). В противном случае пользователь может завершить приложение из-за отсутствия обратной реакции.

Рис. 15.1. Использование индикатора непрерывного хода выполнения процесса для информирования пользователя о продолжительной операции

РАЗРАБОТКА ПРИЛОЖЕНИЙ С СЕТЕВОЙ ПОДДЕРЖКОЙ

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

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

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

•             Поставьте пользователя в известность о том, что вы собираете и используете конфиденциальные данные.

•             Предоставьте пользователю возможность настраивать и отключать функциональность, которая может вызвать негативное впечатление от использования вашего приложения. Например, реализуйте «режим полета», чтобы позволить пользователю наслаждаться вашим приложением без обращения к удаленному серверу.

•             Корректно обрабатывайте такие ситуации, как, например, отсутствие покрытия сети. Ваше приложение будет более ценным для пользователя, если им можно будет пользоваться даже без подключения к Интернету.

•             Подумайте над добавлением раздела, посвященного конфиденциальности, в соглашение об использовании приложения. Используйте эту возможность, чтобы предупредить пользователя о том, какие данные собирает приложение, каким образом они будут (или не будут) использоваться, и будут ли они храниться где-либо (например, на удаленном сервере приложения).

ВНИМАНИЕ! ______________________________________________________________

На сегодняшний день большинство Android-устройств — телефоны и планшеты с воз­можностью подключения к Интернету, но не только. Нет никакой гарантии, что каждое устройство под управлением ОС Android имеет сетевую поддержку, однако можно с большой уверенностью утверждать, что в том или ином виде подключение к Интернету будет присутствовать. Учитывайте этот факт при принятии решения об использовании сетевых возможностей вашим приложением.

Включение возможности тестирования сетевой поддержки на эмуляторе

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

Литература: Дэрси JI., Android за 24 часа. Программирование приложений под операционную систему Google/ ДэрсиЛ., КондерШ. — М.: Рид Групп, 2011. — 464 с. — (Профессиональные компьютерные книги). ISBN 978-5-4252-0318-2

По теме:

  • Комментарии