Android-приложение отладчика приложений с ошибкой InterruptedException
Во время работы сегодня казалось, что я уже не мог отлаживать наше приложение. Самое смешное, если я запускаю приложение, это нормально. Чтобы уточнить, я запускал отладчик все утро без инцидентов (кроме случайных сбоев или сбоев). Затем после обеда он начал терпеть неудачу в 100% случаев. Конечно, я делаю изменения весь день, поэтому "кажется" выше. Итак, вот некоторые релевантные детали:
-
Android Studio 2.1.1 (28 апреля 2016 г.)
-
Это приложение запускается с помощью экрана входа в систему. Затем пользователь должен аутентифицироваться с именем пользователя/паролем, который вызывает внешнюю службу.
-
Я могу перейти на экран входа в систему, но приложение всегда будет сбой в той же точке в середине проверки подлинности.
Вот трассировка стека:
05-24 14:56:25.764 2399-2745/com.mycomp.myapp.test E/Crashlytics: Failed to execute task.
java.lang.InterruptedException
at java.util.concurrent.FutureTask.awaitDone(FutureTask.java:375)
at java.util.concurrent.FutureTask.get(FutureTask.java:162)
at com.crashlytics.android.v.a(SourceFile:1936)
at com.crashlytics.android.v.uncaughtException(SourceFile:307)
at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:693)
at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:690)
05-24 14:56:25.764 2399-2745/com.mycomp.myapp.test E/AndroidRuntime: FATAL EXCEPTION: pool-5-thread-1
Process: com.mycomp.myapp.test, PID: 2399
java.lang.InterruptedException
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.reportInterruptAfterWait(AbstractQueuedSynchronizer.java:1991)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2025)
at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:410)
at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1035)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1097)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
at java.lang.Thread.run(Thread.java:820)
Вот что я пытался исправить:
- Отмените все мои изменения (git stash)
- Удалить приложение с телефона
- Сделайте чистую сборку
- Сделайте Gradle Resync проекта
- Удалить все точки останова (серьезно?)
- Хорошо, я все время добавлял точки останова, чтобы понять, как все работает, так кто знает? Там есть некоторые достоинства.
- Перезапустите Android Studio! (выключите и снова включите)
И пока ничего не работает. Тем не менее, я не могу подчеркнуть, что если я просто запустил приложение (кнопку воспроизведения, ^ R) и запустил его на том же самом устройстве, он работает отлично! Войдите в систему без проблем. Таким образом, это не похоже на проблему с кодом.
Кроме того, если вы посмотрите на трассировку стека, ничего не указывает на наш проект.
Любые идеи?
Ответы
Ответ 1
Ну, я понял это. Оказывается, у меня была "точка наблюдения Java", выбранная с "Suspend Thread" в качестве одного из параметров. См. Прикрепленный снимок экрана для уточнения. Takeaways:
Как вы можете видеть, я использовал кучу точек останова, поэтому он зарылся в окно, и я не видел его.
Я до сих пор не знаю, как это получилось. Я использовал часы накануне, но я удалил их все. Кроме того, я совершенно уверен, что я не включил его, так как таинственным образом перестала работать в середине дня, остается загадкой. Кроме того, я, конечно, не проверил бы "suspend thread" самостоятельно. Какая-то настройка по умолчанию?
Точка остается - если вы видите странные трассировки стека, может быть хорошо проверить все точки останова и точки наблюдения.
Я надеюсь, что это поможет кому-то.
![Снимок экрана окна BreakPoint в Android Studio]()
Ответ 2
Мгновенный запуск, по-видимому, является виновником (по крайней мере, в моем случае с Android Studio 2.3.3). Вместо отключения точек останова попробуйте отключить Instant Run. Как только я это сделал, точки останова перестали вызывать сбои.
См. Сбой приложения Android при запуске в режиме отладки. В Mac OS X я отключил Instant Run, перейдя в Android Studio- > Preferences- > Build, Execution, Deployment- > InstantRun и сняв флажок "Включить мгновенный запуск до горячей замены...".
Есть ли у вас проблемы с мгновенным запуском? сообщение отображается на панели настроек. Я нажал "Включить и активировать дополнительную регистрацию", воспроизвел сбой, а затем сразу же сообщил, используя параметр "Справка - отчет мгновенного запуска..." по мере их запроса.