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 может помочь.
Или поделитесь подробными фрагментами кода. это зависит от ваших требований к коду и того, что вы делаете и как.
Изучите свою кодовую базу, особенно части, связанные с многопоточностью или фоновыми задачами. Обратите пристальное внимание на области, где используются потоки, и убедитесь, что для предотвращения конфликтов используются правильные механизмы синхронизации, такие как блокировки или семафоры.
Проанализируйте, есть ли в процессе отладки что-либо, что может вызвать проблему. Иногда точки останова, наблюдения или оценки сложных выражений могут иметь непредвиденные последствия, в результате чего приложение ведет себя при отладке иначе, чем при обычном выполнении.
Я думаю, что это может быть виновником, обратите на это внимание, и иногда конфигурации build.gradle также вызывают проблему с некоторыми библиотеками.
Приятного кодирования :)