Сколько видов деятельности я должен использовать?

Я запускаю приложение Android для поиска ресторанов, и некоторые рекомендации будут приветствоваться! На первом экране я хотел бы иметь поле поиска с кнопкой отправки (я получаю данные из веб-службы) и ниже списка с результатами поиска. При нажатии на один из элементов списка он отображает экран с подробностями ресторана, а также карту, показывающую ее местоположение. Мои вопросы:

  • Могу ли я сделать все за один сеанс или я должен выполнить операцию для поиска, одну для списка результатов, одну для описания ресторана и другую для карты?
  • Будет ли одно действие сделать приложение более отзывчивым?
  • Как я могу использовать список и карту в рамках обычной деятельности (без ListActivity и MapActivity)?

Solutions Collecting From Web of "Сколько видов деятельности я должен использовать?"

Могу ли я сделать все за один сеанс или я должен выполнить операцию для поиска, одну для списка результатов, одну для описания ресторана и другую для карты?

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

Одна из крайностей состоит в том, чтобы поместить все эти шаги в разные действия. Затем пользователь имеет полный контроль с помощью кнопки «назад», но они могут раздражаться, прыгая вокруг «Деятельности». Еще одна крайность – включение всего этого в одну деятельность, и я очень советую против этого; Пользователи ожидают, что новые экраны будут отличаться от Activity, из-за которых они могут «вернуться», и поэтому, если вы поместите все свои яйца в одно действие, вам придется начать «возвращаться» самостоятельно.

Я думаю, что есть хорошая промежуточная точка, которую может принести ваше приложение, хотя, конечно, ваш дизайн пользовательского интерфейса может отличаться от того, что я предлагаю. Я бы сказал, что вы можете сделать это в двух действиях; Во-первых, у вас есть поле поиска вверху (рядом с ним кнопка отправки), а ниже этого поля поиска – ListView, который заполняется результатами. Во втором случае вы используете TabActivity, где одна вкладка для описания, а другая – для карты. Я думаю, что это выгодно по двум причинам: при первом действии пользователь видит результаты поиска на той же странице, что и поиск, и может быстро изменить параметры поиска, если это необходимо. А на втором мероприятии задний ключ инкапсулирует поддержку из одного ресторана.

Будет ли одно действие сделать приложение более отзывчивым?

На самом деле, нет. Мероприятия требуют времени для создания / срыва, но не так много времени. Лучше сегментировать ваше приложение логичным способом (для пользователей).

Как я могу использовать список и карту в рамках обычной деятельности (без ListActivity и MapActivity)?

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

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

У меня была бы активность как с поиском, так и с списком, а затем с другим, который показывает детали restuarant.

Я не думаю, что это будет хорошо работать только с одним Управлением.

Действия могут содержать несколько видов – при необходимости одно действие может содержать карту и список.

Я хотел бы добавить некоторые рекомендации к превосходному ответу Даниэля.

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

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

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

Если вы хотите написать модульный, многоразовый и переносимый код, одним из действий является способ перехода. Активность – это концепция только для Android. Основной поток и бизнес-логика любого хорошо спроектированного приложения должны быть независимыми от платформы. Вовлечение действий в ваш код более высокого уровня связывает ваш проект с Android, который идет вразрез с независимостью от платформы, основным принципом как в Java, так и в программном обеспечении качества в целом.