InterruptedException при отладке приложения для Android

При отладке в Android Studio в некоторых случаях происходит сбой приложения со следующим исключением:

08-27 18:01:25.144  19241-24656/? E/AndroidRuntime﹕ FATAL EXCEPTION: pool-7-thread-1
Process: com.callsign.android.dev, PID: 19241
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)

Бывает

  • только при отладке
  • только на определенных устройствах (например, Moto G, Nexus 4)

Это не происходит на Oneplus One или Xperia L, например.

Я не нашел никакой другой информации, чтобы помочь нам определить проблему. Кто-нибудь еще сталкивался с этой проблемой?

3 ответа

Попробуйте Async Task или для вашей части кода. "AbstractQueuedSynchronizer" выглядит проблемой синхронизации.

public class Task extends AsyncTask<Void, Void, Void>
    {
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
        }

        protected Void doInBackground(Void... paths) {
            //here your code (approx from line 400 to 850)
           return null;
        }

        @Override
        protected void onPostExecute(Void result) {
            super.onPostExecute(result);
        }
    }

для вызова Задача по нажатию кнопки или из любого другого метода

new Task().execute();

Это может вам помочь. Установите точку останова в методе Thread::interrupt и поймайте нарушителя. Для получения дополнительной информации Link может помочь.

Или поделитесь подробными фрагментами кода. это зависит от ваших требований к коду и того, что вы делаете и как.

  1. Изучите свою кодовую базу, особенно части, связанные с многопоточностью или фоновыми задачами. Обратите пристальное внимание на области, где используются потоки, и убедитесь, что для предотвращения конфликтов используются правильные механизмы синхронизации, такие как блокировки или семафоры.

  2. Проанализируйте, есть ли в процессе отладки что-либо, что может вызвать проблему. Иногда точки останова, наблюдения или оценки сложных выражений могут иметь непредвиденные последствия, в результате чего приложение ведет себя при отладке иначе, чем при обычном выполнении.

Я думаю, что это может быть виновником, обратите на это внимание, и иногда конфигурации build.gradle также вызывают проблему с некоторыми библиотеками.

Приятного кодирования :)

Другие вопросы по тегам