Я не уверен, нужно ли мне добавлять кнопку выхода в мое приложение. Есть ли смысл это делать? И если при выходе из одного действия или службы не будет .finish() или закрыто должным образом, может ли это нанести большой ущерб?
Кнопка выхода из Android-приложения
Ответы (10)
Вам не нужно добавлять кнопку выхода. Если вы этого не сделаете, ваша активность будет просто храниться в памяти, пока система не восстановит ее. Он не будет потреблять процессор.
Конечно, если у вас есть какие-либо рабочие потоки, вы должны остановить их в onStop() или onPause(), в зависимости от того, что делают ваши потоки.
Многие приложения по какой-то причине добавляют кнопку выхода. Я предполагаю, что причина в том, что они не верят в то, что напишут правильный код, или не верят в то, что ОС Android должна правильно очиститься.
Невыполнение правильных процедур отделки не причинит вреда никому, кроме вас самих.
Любой, кто говорит, что вам не нужна кнопка выхода, прав, но ее установка никогда не помешает. Пользователям нравится видеть способ выхода из приложения, речь идет не о плохом программировании, а о правильном программировании, дать пользователю кнопку выхода, и если он никогда ее не использует, отлично, а если она есть, еще лучше.
Вам не нужна кнопка выхода в вашем приложении. Так работает андроид. Пользователю не предоставляется никакого способа выйти из приложения.
Когда вы вызываете «finish», стек приложения просто переносится на задний план. Он до сих пор существует в памяти. Android сам решает, когда закрыть приложение (то есть удалить его экземпляр из памяти), и обычно это делается, когда ваше приложение становится самым старым приложением, которое не использовалось в течение длительного времени.
Нет, не знаешь. Ознакомьтесь с жизненным циклом активности на сайте developer.android.com.
В более старых версиях Android вы должны были быть осторожны, чтобы случайно не оставить фоновую службу работающей и удерживающей ресурсы, но это было переработано.
Ребята, вы правы, но бывают случаи, когда кнопка «Выход» может иметь смысл. Допустим, вы храните некоторые глобальные данные для всего приложения в классе YourApplication (дочернем элементе Application), например. некоторые конфиденциальные данные или около того. Когда пользователь закрывает окончательную активность и она уничтожается, приложение не будет завершено. Как прочитать ресурс разработчика Android — разработчику не следует полагаться на метод Application.onTerminate(). Вы можете легко это проверить - даже в том случае, когда все действия закрыты. Приложение все еще живо. Всякий раз, когда экземпляр приложения жив, относительно легко получить доступ к этому объекту и собрать данные.
Я нашел 2 способа убить экземпляр класса приложения:
- обнулять все ссылки на объекты (что вряд ли возможно для больших проектов), а затем вызывать сборку мусора
вызов
android.os.Process.killProcess(android.os.Process.myPid());
Таким образом, кнопка «Выход» может иметь функцию для завершения всех действий, вызова сборки мусора, а затем вызова killProcess(), что гарантирует безопасное удаление глобальных данных, хранящихся в приложении.
Я согласен с вышеприведенным постом barmaley.
Короче говоря, вам не нужно выходить из приложения, если ваши проблемы связаны с самой системой Android. Не переживай, будь счастлив. И это особенно актуально для ленивых пользователей (вспомните старые времена Symbian).
Однако, если у вас есть какие-то мысли о самом приложении, пожалуйста, сделайте это. Вы можете закончить деятельность, обнулить и убить. Просто будьте разумны, потому что, как всегда, здравый смысл будет лучше, чем все учебники и справочники в мире.
Во всяком случае, только мой 2c.
С технической точки зрения нет, вам не нужно добавлять кнопку выхода по всем очень веским причинам, перечисленным здесь.
К сожалению, пользователи не информируются таким образом и регулярно снижают оценки, потому что им приходится «использовать убийцу задач» или «принудительно закрывать» ваше приложение.
Это регулярная просьба и критика в обзорах/отзывах о моем приложении. Так что может быть необходимо успокоить пользователей.
Я думаю, что кнопка выхода может дать пользователю уверенность в том, что ваше приложение закрыто.
Я знаю, что это еще не означает, что приложение определенно закрыто, но если пользователь чувствует больше контроля с помощью кнопки выхода, то я говорю, что это хорошая идея.
Когда я впервые начал программировать для Android, я подумал, что было бы неплохо вручную выйти из основной деятельности. Я обнаружил, что закрытие активности через stopSelf приводит к повреждению данных instanceState, что вызывает множество ошибок ANR при повторном открытии активности.
Документ «Жизненный цикл активности» — это информация, полученная непосредственно от разработчиков платформы Google. У каждого слова есть причина.
Учтите, что сборка мусора требует процессора. Это может показаться тривиальным, но при разработке фреймворка для мобильной платформы не попытаетесь ли вы кэшировать как можно больше в памяти на случай, если она понадобится снова, так как время процессора = батарея, а загрузка с флэш-памяти стоит дорого?
Сборщик мусора для всего приложения нетривиален. Особенно, когда активность может использоваться неоднократно. Дизайн должен был учитывать все возможные варианты использования. Кэширование имеет смысл. Система разработана по этому принципу.
Я бы сказал, что несоблюдение документа «Жизненный цикл деятельности» вызывает проблемы.
Некоторые приложения изменяют конфигурацию устройства во время работы или потребляют много ресурсов ЦП или данных. Вы можете предоставить пользователям возможность полностью выйти из приложения.
Существуют есть подходящие варианты использования кнопки "Выход".
Например, приложение, которое я сделал, также должно управлять сетями Wi-Fi: конфигурация устройства постоянно меняется. Потрясающе, и все это, пока приложение активно используется, в этом случае пользователь ожидает, что поведение эффективно прекратится после выхода из приложения.
Таким образом, в моем приложении есть кнопка «Выход», в основном для очистки созданных им конфигураций WiFi. Я мог бы сделать кнопку Stop and Cleanup, но ни один пользователь не понял бы. Они просто хотят выключить приложение, поэтому Exit.
- Приложение работает: Wi-Fi управляется приложением.
- Приложение закрыто: diy/android wifi.
Прямо сейчас выбор «Выход» в моем приложении выполняет очистку, за которой следует finish()
, но само приложение задерживается в фоновом режиме. Функционально нормально, но сбивает с толку пользователей. Я мог бы сделать действие-переключатель под названием «функция Wi-Fi вкл / выкл», но это не упростит ситуацию.