Як зупинити роботу програми під Eclipse?


107

Я не можу знайти можливість зупинити запущену програму (в режимі налагодження чи випуску).

Тож поки я зупиняю програму (повертаючи контроль до Eclipse) просто закриваючи емулятор.

Чи є кращий спосіб зробити це? Таке, що мені не потрібно закривати (і перезавантажувати) емулятор?

Відповіді:


112

Я розумію, ви хочете зупинити свою програму на емуляторі. Для цього ви можете відкрити вікно пристроїв (у перспективі налагодження), вибрати процес, а потім натиснути кнопку зупинки у тому ж вікні.


1
Дуже дякую. Ти врятував мені життя. Я прийму вашу відповідь через 7 хвилин ... :)
Android Eve

1
Додавання іншого способу, який я щойно виявив: у емуляторі виберіть Налаштування> Програми> Керування програмами> (виберіть додаток)> Примусово зупинити.
Android Eve

Я. це інший спосіб, але потрібен час, щоб дістатися до нього, якщо тільки у вас це не на задньому плані. :)
Варун

11
кнопка "Стоп", як у Visual Studio, була б так приємно. тьфу.
Ian Davis

Щойно запустили додаток одразу після створення проекту, і, натиснувши кнопку зупинки, він не вбив процес, але запустив RemoteException sending setActive(false) notificationу вікні перегляду
logCat

77

Тим, кому здається, що нудно перемикатися між перспективами для зупинки програми (як я), ви можете переглянути вікна пристроїв у поточній перспективі, вибравши

Windows > Показати перегляд > Інші ... > Android > Пристрої


3
Дякую, саме це я шукав! +1
Сабобін

+1. Чудово! І якщо я хочу, щоб він запустився ще раз, я просто запускаю його знову з пристрою, і він працює ідеально.
Франциско Корралес Моралес

Ще один крок - знайдіть свій пакет ID у списку. Спочатку мене це відклало, але потім мені було на кшталт "О здорово! Я все бачу". Приємно бачити, що Android має під його капотом (зауважте: я використовую симулятор Genymotion, можливо, емулятор це те, що ви говорите, я просто не можу чекати, поки він запуститься)
Stephen J

Це порушує життєвий цикл додатків для Android і може призвести до неприємних виходів, що призведе до неможливості перезапустити програму та змусить перезавантажити пристрій для усунення проблеми.
Домінік Серісано

13

Майте на увазі, що на Android програми зазвичай "зупиняються" лише тоді, коли ви закінчите () або система знищує їх, коли потрібна пам'ять. Навіщо взагалі зупинятися? Наприклад, вам не потрібно зупинятися, щоб виправити / перевстановити / повторно протестувати.


Це чудове розуміння. Дякую. +1
Android Eve

1
@Eve .. моє задоволення. Щоб дізнатися більше про деталі, перегляньте stackoverflow.com/questions/2033914/…
DJC

4
Ну, можливо. Але це насправді не відповідає на питання. У моєму випадку я граю разом з класом AudioTrack і генерую потік звуків. Дуже прикро слухати цю синусоїду постійно. Мені потрібно перейти до DDMS, відшукати праву нитку, вибрати її, а потім знайти піктограму STOP. Дуже кульгавий.
Вагрант

2
Як можна скинути стан своєї програми, не зупиняючись?
Ерік Енгхайм

Я помітив за допомогою емулятора, він не запустить вашу програму ще раз через кілька хвилин (можливо, тому, що вона все ще працює). Це зручно закінчити раніше, коли вам потрібно зробити невелику редагування, а потім швидко перевірити її в емуляторі. І часто ви вносите кілька невеликих редагувань, тому можливість зупинити запущений додаток і перезавантажити його, щоб перевірити, швидко економить багато часу.
Azurespot

12

У перспективі "Налагодження" виберіть корінь програми в розділі "Налагодження" (де перелік активних потоків) та натисніть кнопку "Стоп".


дякую і вам. Я зрозумів ваші вказівки лише після прочитання @ varun's. +1
Android Eve

@Android Eve, ах, добре, я радий, що це допомогло. Вибачте, це було недостатньо ясно!
Кріс Томпсон

Це добре. Я повністю дезорієнтований щодо розвитку Android, незважаючи на (а можливо, через) багаторічну розробку на багатьох інших платформах.
Android Eve

Так, це далеко не найпростіше рішення. (Насправді, чи має бути спрощена відповідь). Кнопка "Стоп" відключена лише тоді, коли виділена нитка замість верхньої записи [Додаток для Android].
Колін

7

Працює для мене.

Windows -> Відкрита перспектива -> Інше ... -> DDMS

  1. У вікні Android у лівій частині вікон ви бачите "Пристрої". Повинен бути список програм, які зараз запущені (Емулятор або фізичні пристрої). Клацніть на програму, яку ви хочете закрити. Зазвичай ім'я - це ім'я пакета + назва програми
  2. Тепер натисніть на символ "Стоп".

Щоб повернутися до звичайного вигляду, потрібно просто натиснути кнопку Java у верхньому правому куті. Ви також можете це натиснути: Windows -> Відкрити перспективу -> Інше ... -> Java


2

ця відповідь не стосується Eclipse, але оскільки це питання з'являється в пошуку Google для зупинки запущеної програми Android, я хотів би запропонувати метод командного рядка. запустіть adb shell, знайдіть PID процесу, який ви хочете вбити ps, наприклад, мій був:

u0_a46 2097 37 175520 19912 ffffffff 40037ebc S net.unternet.bleah.blarg

то тоді просто kill 2097 і вам слід знову побачити головний екран.


Порушення життєвого циклу програми. Може спричинити проблеми з невивільненням системних ресурсів і змусити очистити перезавантаження пристрою.
Домінік Серісано

0

Додайте до свого коду точку перерви, де потрібно зупинитися, а потім запустіть її в режимі налагодження, натиснувши F11.


0

Android Zombies Малюнок 1 - Багато зомбі були вбиті під час дослідження цього відповіді

Вбивати додаток для Android процес Java VM на рівні ОС не рекомендується. На жаль, саме це робить "зупинка" вікна пристрою затемнення, як і System.exit () та команда "kill" оболонки.

Це підриває звичайні методи життєвого циклу додатків, такі як onStop (), onDestroy () та завершується ().

У багатьох додатках потрібні ці методи для витонченого виходу (наприклад, якщо вони використовують системні об'єкти, такі як Sensor, MediaPlayer, Equalizer, Visualizer тощо).

Ці системні об'єкти зависають із зомбі загибелі на системних ресурсах, якщо випуск () не викликається явно під час цих методів життєвого циклу. Див. Рис. 1 вище. Це може запобігти перезавантаженню програми та навіть вимагати перезавантаження. Це непристойний аспект.

Єдине рішення - переконатися, що ви завжди чисто виходите зі свого додатка, зателефонувавши на onStop () або onDestroy () або принаймні завершивши (). Налагоджувач робить це, як і ОС при відключенні.

Ви можете налаштувати свою програму на захоплення подій SIG_HUP, щоб змусити витончений вихід із командного рядка.

Єдиний раз, коли ви вбили б програму VM, перебуваєте в ANR (вже зомбі) стані. ANR повинні бути виправлені. Ніколи не розгортайте додаток, який може перейти в цей стан. Це надзвичайно грубо.

Ви можете використовувати аналітику Google і Play Store, щоб контролювати їх під час розгортання. Ви не хочете, щоб розлючені користувачі давали огляди ANR з однією зіркою після перезавантаження через вашу програму зомбі. Дуже погано.

Пам’ятайте, що Android - це Linux: ставитесь до нього як до справжньої ОС та поважайте життєвий цикл програми, інакше ви неодмінно зіткнетесь з жахливим апокаліпсисом зомбі.

PS: Якщо вам не подобається аналогія Zombie, як щодо Fantasia?

введіть тут опис зображення


0

Дивіться малюнок: 1. Клацніть на DDMS; 2. Виберіть поточний додаток; 3. Клацніть на "Зупинити" введіть тут опис зображення


Я роблю це, і додаток припиняє налагодження. але має бути випадок: 1 - вимкніть пристрій від usb, запустіть додаток, тоді, коли програма стикається з помилкою, вона закриється, а після цього під час кожного запуску виведіть форму налагодження і чекайте, коли кабель usb підключиться або натисніть кнопку назад. 2-пристрій підключиться до usb та запуску програми (Ctrl + f11), потім, автоматично запустити додаток у режимі налагодження. Щоб вирішити це, я створив новий проект, і один за одним копіював / вставляв файли в новий проект, але те ж саме повторюється. Тепер будь-яка допомога?
Ахмад Ебрагімі
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.