2010-08-16 3 views
3

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

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

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

Так что в таких случаях диспетчер задач мой единственный друг или есть способ для меня иначе убить это приложение?

PS: если есть ошибка в моем понимании того, что происходит, когда кнопка нажата домой, я хотел бы исправить ... =)

ответ

3

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

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

Это поведение жизненного цикла отличается от того, с которым вы привыкли, от обычной машины. Но если приложения написаны более или менее правильно, они должны намного лучше использовать мобильное устройство. Вы должны прочитать хотя бы multi threading the android way на блоге Android, возможно, также When to include an exit button. Это даст вам лучшее представление о предполагаемых шаблонах использования на андроиде в отношении приложений с несколькими касаниями и выходами.

+0

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

3

Если вы хотите, чтобы закончить ваше приложение каждый раз, когда пользователь нажимает на дом и перезапускает ваше приложение, вы можете указать это свойство в своем манифесте android: finishOnTaskLaunch = "true". Однако Android не позволяет нам убивать приложение через код и не рекомендуется.

+0

На самом деле андроид позволяет нам убить нас через код. Его называют killBackgroundProcess(). Поищи это. Это в значительной степени убивает процесс, выполняющийся на уровне ядра. Вы можете проверить, запустив оболочку adb и сверху. Спасибо за ваш ответ. – Shouvik

+0

Прежде всего, этот конкретный метод поддерживает API-уровень 8 (что означает SDK 2.2). Если вы не сможете сделать то же самое на устройствах с более низкой версией SDK. На данный момент устройства, работающие под управлением 2.2 SDK, составляют всего 4,5% (согласно Google). Хотя я не использовал его, я не уверен, что он уничтожит все ваше приложение как таковое или убьет/перезапустит фоновые процессы. http://groups.google.com/group/android-developers/browse_thread/thread/6a544bfd05bf10cf http://stackoverflow.com/questions/2877140/android-2-2-deprecates-restartpackage-but-adds -another-headache – DeRagan

Смежные вопросы