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

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

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

Зависимость от оборудования

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

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

  1. Вы начинаете с того, что берете существующее приложение и адаптируете его, или Вы будете разрабатывать приложение с нуля, ориентируясь на целевое устройство?
  2. Вы разрабатываете приложение для конкретного рынка? Это планшетные компьютеры или телефоны?
  3. Вы будете использовать стандартные методы ввода, предусмотренные оборудованием, или адаптируете приложение, добавив поддержку новых методов (например, движения пальца).
  4. Вы знаете, какие сенсоры поддерживаются на целевом оборудовании? Если Вы это знаете, определите, какие из них Ваше приложение будет поддерживать сейчас, а какие - в будущем.
  5. Оборудование поддерживает сенсорный ввод пальцем, стилусом или оба этих метода?
  6. На каком языке и с помощью каких инструментов Вы разрабатываете свое приложение? Убедитесь, что эти инструменты поддерживают необходимые сенсоры и методы.


Как только Вы дадите ответы на предложенные выше вопросы, оцените, хорошо ли пользовательский интерфейс Вашего приложения адаптирован к форм-фактору планшетного компьютера. Поскольку используется сенсорный экран, необходимо учитывать возможность случайных нажатий. С одной стороны, диалоговое окно подтверждения при каждом выборе мешает работе, но, с другой стороны, как пользователи отнесутся к последствиям самопроизвольных нажатий в сумке или в кармане? Убедитесь, что размер области выбора элемента достаточно велик для его выбора касанием пальца. Смогут ли пользователи выбрать нужный элемент? Рекомендуемый размер области касания для сенсорного интерфейса - 10 мм.

Далее приведен список потенциальных проблем и предложений по их решению.

Проблемы и рекомендации

Полезная площадь экрана меньше, чем на настольных компьютерах

  • Уберите ненужные компоненты пользовательского интерфейса и используйте полноэкранный режим.
  • В некоторых случаях размер элементов, таких как диалоговые окна, может быть ограничен в зависимости от размера экрана.
  • Сделайте статические интерфейсные элементы, такие как кнопки закрытия и сворачивания, прозрачными, чтобы оставить как можно больше полезной площади экрана. Конечно, иногда это в значительной степени зависит от предполагаемой целевой ОС. Некоторые из этих проблем не могут быть решены в пределах самого приложения.
  • Не располагайте области выбора по краям и углам экрана, поскольку в этих частях экрана сенсорный ввод может быть затруднен.
  • Пользовательский интерфейс должен работать на устройствах с различным разрешением экрана.
  • Привязывайте диалоговые окна к верхнему левому углу, а не к центру формы. Это может быть полезно для адаптации к различным размерам экрана.

Диалоговые окна не умещаются на экране

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

Экран слишком маленький для отображения всех данных

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

Интерфейс требует дополнительных средств для ввода

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

Случайное срабатывание

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

Требуется дополнительная навигация

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

Физический размер экрана и разрешение отличаются на разных устройствах

  • Убедитесь, что текст легко читается на целевом устройстве.
  • Вы должны знать возможное разрешение по умолчанию. Например, некоторые наиболее распространенные размеры экрана - 800x480 и 1024x600; а технологии масштабирования видео также поддерживают разрешение 800x600 и 1024x768.
  • Многие средства разработки сейчас поддерживают эмуляторы. Если у Вас нет под рукой самого устройства, запускайте пользовательский интерфейс в эмуляторах для проверки его удобства и функциональности.

Некоторые компоненты устройств могут отсутствовать (например, оптические приводы)

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

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

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

Проблемы связи в мобильных приложениях

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

Далее приведен список потенциальных проблем и предложений по их решению.

Проблемы и рекомендации

Ненадежное подключение

  • Используйте методы подписки, чтобы пользователь видел состояние подключения. Большинство современных ОС предоставляют такую возможность.
  • Реализуйте интеллектуальные функции подключения к сети и отключения от сети, а также управления данными.
  • Реализуйте в приложении поддержку работы в автономном режиме и в режиме подключения к сети.
  • Организуйте работу в режиме "всегда на связи", используя архитектуру с промежуточным хранением для плавного перехода между состояниями.
  • Для каких этапов работы приложения требуется подключение, и есть ли возможность свести к минимуму такие этапы?
  • Можно ли отложить коммуникационные задачи на более позднее время? (Например, отложить получение или отправку электронной почты до момента подключения к сети).

Переход от работы в сети к автономной нагрузке

  • Начните кэширование информации, которую нужно будет синхронизировать при повторном подключении.
  • Например, обновления статуса в Facebook*. Добавляйте их в кэш-память, чтобы приложение обрабатывало их более оперативно. Пользователь почувствует, что приложение довольно быстро реагирует на поступающие обновления.
  • Можете ли Вы предугадать потребности пользователя в определенных данных и заранее кэшировать их?
  • Как приложение будет реагировать в случае потери связи во время доступа к данным или передачи файлов?

Переход от автономной работы к работе в сети

  • Приложение должно обнаружить новое подключение и синхронизировать данные, заранее подготовленные в автономном режиме.

Потери данных во время подключения к сети или отключения от сети

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

Сервер или веб-служба не отвечает

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

Синхронный обмен сообщениями

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

Оптимизация длительности работы от аккумулятора и производительности

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

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

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

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

Проблемы и рекомендации

Высокая загрузка процессора при фиксированных рабочих нагрузках

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

Высокая загрузка процессора при статических рабочих нагрузках

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

Ресурсоемкие рабочие нагрузки (например, воспроизведение видео)

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

Чрезмерное использование жесткого диска

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

Неэффективное циклы спин-блокировки

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

Неоптимизированное воспроизведение мультимедиа

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

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

Для получения подробной информации о возможностях оптимизации компилятора обратитесь к нашему Уведомлению об оптимизации.
Возможность комментирования русскоязычного контента была отключена. Узнать подробнее.