Ответ 1
Я понимаю, что вы хотите остановить свое приложение на эмуляторе. Для этого вы можете открыть окно устройств (в перспективе отладки), выбрать процесс, а затем нажать кнопку остановки в том же окне.
Я не могу найти вариант остановки запущенной программы (в режиме отладки или выпуска).
Итак, теперь я останавливаю программу (возвращая управление Eclipse) просто закрывая эмулятор.
Есть ли лучший способ сделать это? Так что мне не нужно закрывать (и перезапускать) эмулятор?
Я понимаю, что вы хотите остановить свое приложение на эмуляторе. Для этого вы можете открыть окно устройств (в перспективе отладки), выбрать процесс, а затем нажать кнопку остановки в том же окне.
Те, кто находит утомительное переключение между перспективами для остановки программы (как и я), вы можете просматривать окна устройств в своей текущей перспективе, выбирая
Windows > Показать вид > Другое... > Android > Устройства
Имейте в виду, что на Android программы, как правило, только "останавливаются", если вы заканчиваете(), или система уничтожает их, когда требуется память. Зачем вообще останавливаться? Например, вам не нужно останавливаться, чтобы исправить/переустановить/перепроверить.
В перспективе "Отладка" выберите корень приложения в разделе "Отладка" (где список активных потоков) и нажмите кнопку "Стоп".
Работаю для меня.
Windows → Open перспектива → Другие... → DDMS
Чтобы вернуться к нормальному виду, вам просто нужно нажать кнопку Java в верхней правой части. Вы также можете сделать это нажатием: Windows → Open перспектива → Другое... → Java
этот ответ не касается Eclipse, но поскольку этот вопрос возникает в поиске Google для остановки запуска программы для Android, я хотел бы предложить метод командной строки. запустите adb shell
, найдите PID процесса, который вы хотите убить, с помощью ps
, например, моя была:
u0_a46 2097 37 175520 19912 ffffffff 40037ebc S net.unternet.bleah.blarg
а затем просто kill 2097
, и вы увидите, как снова появится главный экран.
Добавьте точку останова в свой код, где вы хотите остановить, а затем запустите его в режиме отладки, нажав F11.
Рисунок 1 - Многие зомби были убиты во время исследования этого ответа.
Убивание приложения Android. Процесс Java VM на уровне ОС не рекомендуется. К сожалению, это именно то, что делает окно устройства затмения "stop", равно как и System.exit() и команда "kill" оболочки.
Это подрывает обычные жизненные циклы приложения, такие как onStop(), onDestroy() и finalize().
Многие приложения требуют этих методов для изящного выхода (например, если они используют системные объекты, такие как Sensor, MediaPlayer, Equalizer, Visualizer и т.д.).
Эти системные объекты зависают с захватами смерти зомби на системных ресурсах, если release() не вызывается явно в течение этих жизненных циклов. См. Рис. 1 выше. Это может помешать перезапуску приложения и даже потребовать перезагрузки. Это неприличный аспект.
Единственное решение - убедиться, что вы всегда выходите из приложения с помощью вызова onStop() или onDestroy() или по крайней мере finalize(). Отладчик делает это, как и ОС при выключении.
Вы можете настроить приложение для блокировки событий SIG_HUP, чтобы принудительно выйти из командной строки.
Единственный раз, когда вы убили виртуальную машину приложения, - это состояние ANR (уже зомби). ANR должны быть исправлены. Никогда не развертывайте приложение, которое может войти в это состояние. Это очень грубо.
Вы можете использовать Google Analytics и Play Store для мониторинга для их развертывания. Вы не хотите, чтобы сердитые пользователи давали одиночные обзоры ANR после перезагрузки из-за вашего приложения зомби. Очень плохо.
Помните, что Android - это Linux: рассматривайте его как настоящую ОС и уважайте жизненный цикл приложения, иначе вы наверняка столкнетесь с ужасным Апокалипсисом Зомби.
PS: Если вам не нравится аналог Zombie, как насчет Fantasia?
Смотрите изображение:
1. Нажмите DDMS;
2. Выберите текущее приложение;
3. Нажмите "Стоп"