Подтвердить что ты не робот

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) и запустил его на том же самом устройстве, он работает отлично! Войдите в систему без проблем. Таким образом, это не похоже на проблему с кодом.

Кроме того, если вы посмотрите на трассировку стека, ничего не указывает на наш проект.

Любые идеи?

4b9b3361

Ответ 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 и сняв флажок "Включить мгновенный запуск до горячей замены...".

Есть ли у вас проблемы с мгновенным запуском? сообщение отображается на панели настроек. Я нажал "Включить и активировать дополнительную регистрацию", воспроизвел сбой, а затем сразу же сообщил, используя параметр "Справка - отчет мгновенного запуска..." по мере их запроса.