Все мы знаем жизненный цикл Activity, основного кирпичика, из которого состоит Android приложение (по крайней мере обладающее UI).
Также мы знаем, что Activity может уничтожаться самой осью в зависимости от нагрузки/наличия памяти и проч. обстоятельств.
Бывают такие приложения (например приложения онлайн банкинга), которые требуют авторизации/входа
в этом случае, по аналогии с обычными десктоп приложениями напрашивается опция/кнопка/экшн - Выход/Exit/Quit, нажатие на которое приводит к гарантированному закрытию приложения. Например, такой паттерн используется в широко известном мобильном приложении "Сбербанк Онлайн".
Другое чуть менее известное мобильное приложение от банка "Тинькофф", не используе
такой шаблон (вернее таки там можно выйти из приложения таким способом, но это запрятан
довольно глубоко), выход из приложения, в этом случае производится через системную кнопку back/назад - при достижении дна стека последних Activity - приложение само прекращает работу.
Внимание, вопрос: является ли использование специализированного действия выход/exit для Android приложений нормальным или это антипаттерн?
Ответы
Ответ 1
Кроме объектов Activity, есть еще объект Application, который по задумке авторо
ОС в идеале должен жить вечно для приложения, единожды запущенного пользователем. И нет никакого "легального" программного способа уничтожить этот объект. Так что такого понятия "Выйти", как мы привыкли на компьютерах, нет вообще.
Что касается приложений для онлайн-банкинга и других, работающих с закрытыми данными
тут должно быть четкое и ясное для пользователя разграничение на зоны (открытая\защищенная) и явный переход между ними.
Вход в защищенную зону с помощью ПИНа или логина-пароля, соответственно выход и
нее по подтверждению (закончить? да-нет, либо явная команда "Выйти").
Само приложение может оставаться в памяти и даже на экране, главное чтобы все токен
были удалены\отозваны, сессии закрыты и т.п. Это достаточный уровень безопасности для стандартного пользователя.
Если же ваши пользователи настолько параноидальны либо требовательны, что мол в памят
что-то осталось и т.п., то тут они ошиблись системой. Виртуальная машина не предоставляет настолько высокий уровень безопасности. И заморачиваться этим в приложении нет никакого смысла.
Ответ 2
Я считаю, что "культура выхода (входа)" из (серьезного) приложения специально должн
быть выстроена таким образом, чтобы пользователю, который с опасением рассматривае
быстрое и легкое взаимоотношение со своими активами , было предельно ясно когда и как открывается приложение, когда и как закрывается приложение. Выход кнопкой Назад из банковского приложения лично в меня вселял бы некоторое сомнение.
Программисты реализующие подобные приложения вероятно учитывают психологию массового пользователя, либо им ставят задачу это (и наверняка многое другое) учитывать.
Считаю специализированный выход/exit из специализированного приложения нормальным
а значит и паттерном. В иных приложениях этот паттерн явно будет не востребован, став антипаттерном.
Ответ 3
Выход из приложения с освобождением ресурсов реально нужен в играх. При этом выхо
не означает завершение всех сервисов, которые могут быть нужны в фоне. Для банковски
приложений выход не из приложения, а из ЛК, где под паролем скрываются конфиденциальные/финансовые данные. В остальных случаях убиение андроидом вполне себе выход и отдельная кнопка там не нужна.
upd
Игры в массе своей грузят все ресурсы при старте и больше их не выгружают. Избегая
таким образом, вызовов сборщика мусора, гарантируя при этом отсутствие лагов из-за gc. Бывает, что отдельные сцены догружаются и выгружаются по мере необходимости (уровни, например).
Поскольку загрузка и выгрузка занимает довольно длительное время, лучше у пользовател
лишний раз спросить о выходе, чем загружать все по новой из-за случайного нажатия back. И кнопка выход в меню (по кнопке back или по кнопке в интерфейсе) должна нажиматься осознанно.
Верно и с другой стороны, если пользователь наигрался, то ни к чему держать в памят
сотни мегабайт загруженных ресурсов, да еще если логика какая-то считается в фоне притом, сжирая батарейку, то пользователь должен иметь возможность выйти из игры совсем - по кнопке.
К сожалению, игрописатели, бывает, пренебрегают освобождением ресурсов, оставля
при этом работающие в фоне сервисы для отображений нотификаций, опроса сервера на предме
обновлений и новых событий, хорошо если потребление памяти и процессора (батареи) такими сервисами не сильно большое... По этой же причине так популярны всяческие taskkiller'ы и проч.
Ответ 4
Действительно ОС Андроид сама заботится о закрытии приложений с которыми работа
пользователь и занимается "сопровождением" жизненного цикла приложения. Дать однозначный ответ является ли использование кнопки «выход» паттерном или антипаттерном нельзя. Все зависит от того как грамотно ее реализацию применяют разработчики.
В руководстве по material design в разделе посвященном usability – accessibilit
, можно найти информацию о том, что навигация в приложении должна быть построена таким образом, чтобы она давала пользователю уверенность и понимание где он находится в вашем приложении.
В приложениях, которые работают с важной для пользователя информацией (финансовы
приложения, работа с данными в облаке и т.п.), кнопка «выход» означает не только закрыти
самого приложения, но выполняет еще и определенный дополнительный функционал (автоматическо
закрытие сессии при использовании мобильного банка, выход из «облака» и т.п.). В приложениях такого типа желательно показать пользователю, что он работает в некой закрытой, защищенной среде и усилить его уверенность в том, что это безопасно. При этом кнопка «выход» четко показывает границу защищенной среды. А ее использование позволит еще более обезопасить работу с приложением, затруднит атаки злоумышленников на него.
Есть еще один способ использования кнопки «выход», когда по умолчанию от пользовател
она скрыта, но при определенных настройках она появляется в меню. Реализацию таког
способа можно увидеть на примере браузера Firefox для ОС Андроид. При этом она также помимо закрытия самого приложения кнопка «выход» также выполняет дополнительный функционал (удаление данных настраиваемых пользователем).
Как видно и в первом и во втором случаях кнопка «выход» не только улучшает взаимодействи
с приложением, но и реализует дополнительный функционал придающий простоту использования определенных функций безопасности.
В приложениях которые выполняют определенный функционал в фоновом режиме,также уместн
использование кнопки "выход". Реализация кнопки должно давать четкое понимание, что при её нажатии приложение полностью закрывает как пользовательский интерфейс так и все фоновые процессы.
Таким образом, можно сделать вывод, что если кнопка «выход» добавляет уверенност
пользователю при работе с приложением, облегчает использование определенного функционала
улучшает навигацию в нем, то в этом случае ее реализацию в приложении можно назвать паттерном. Если же реализация кнопки «выход» только нагружает пользователя дополнительными действиями, не привнося ни какой дополнительной полезной нагрузки, то такую реализацию можно назвать скорее антипаттерном.
Ответ 5
В сложных приложениях я бы, как пользователь, хотел бы видеть кнопки для выхода и
аккаунта и для выхода из приложения. Вторая должна работать как в приложении Viber
закрывает приложение вместе с фоновыми процессами, чтобы избежать уведомлений, пока не будет снова запущено. Кроме того аналогичное "Выйти" я предусматривал бы для всех игр, чтобы прямо из игры можно было выйти закрыв все процессы игры и освободив память.
Ответ 6
Судя по тому, что говорит документация, переопределение поведения по умолчанию для кнопки назад (как и других аппаратных кнопок) - моветон:
Внимание! В большинстве приложений не следует прерывать поведение
операций и задач по умолчанию. Если вы обнаружили, что вашей операции
необходимо изменить поведение по умолчанию, будьте внимательны и
протестируйте удобство работы с операцией во время запуска и при
обратной навигации к ней из других операций и задач с помощью кнопки
Назад. Обязательно протестируйте поведение навигации, которое может
противоречить поведению, ожидаемому пользователем.
То есть, определённо не стоит наделять аппаратную кнопку "Назад" возможностью выхода из приложения. :)
Что касается остальных случаев... Существует мнение, что не стоит принудительно закрывать приложения, и речь идёт даже не о программном закрытии приложений.
Вот интересная статья на эту тему (статья про iOS, но, по-моему, применительно
Andoid это тоже работает) и мой вольный перевод:
Принудительное закрытие приложений, когда они не испытывают проблем,
не является хорошей идеей по нескольким причинам. ... Для телефона так
проще открывать приложения и это экономит батарею, если приложения недавно использовалось. Если же вы закрыли все свои приложения, каждый
раз, когда вы снова открываете приложения, телефон загружает их в
режиме cold booting из полностью закрытого состояния. Это нагружает
процессор и батарею.
И небольшая иллюстрация из этой же статьи:
Таким образом, есть основание полагать, что программно закрывать приложение тем боле
не стоит. Не буду утверждать, что это мнение единственно правильное, но, как минимум, оно достаточно интересное.
Ответ 7
Я считаю что однозначный выход из приложения должен быть с точки зрения юзабилити
а вот будет это реальный выход, или уход в паузу/фон другой вопрос. А именно зависи
уже от того что делает приложение. Потому что, сейчас, например масса приложений у которы
явного выхода нету, и их приходится принудительно "выходить" из-за того что они перестают внятно работать без этого в виду тех или иных причин. В идеальной картине мира, конечно хорошо когда ОС сама решает как правильнее, но пока гугл не встроил ИИ в телефоны, без этого не обойтись.
Ответ 8
Я думаю что пользователь должен иметь возможность явного выхода из приложения, те
более в онлайн приложениях где есть серьёзные личные данные - это на уровне психологи
успокаивает пользователя что он вышел и его данные никто не перехватит, и перед закрытием приложения выполнять все необходимые действия по выходу из аккаунта, закрытию сессии и т.д.. Мне кажется что наличие простого и удобного способа выхода из приложения "из коробки" - недочёт разработчиков гугла.
Комментариев нет:
Отправить комментарий