提问人:Marcel Bro 提问时间:8/28/2015 更新时间:7/28/2023 访问量:2421
调试 Android 应用时出现 InterruptedException
InterruptedException when debugging Android app
问:
在 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上。
我没有找到任何其他信息来帮助我们确定问题。还有其他人遇到这个问题吗?
答:
0赞
Sagar Makhija
9/29/2017
#1
尝试异步任务或部分代码。 “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();
0赞
Anant Shah
5/29/2022
#2
这可能会对你有所帮助, 在方法 Thread::interrupt 中设置断点并捕获违规者。欲了解更多信息,Link 可以提供帮助。
或者分享一些详细的代码片段。这取决于你的代码要求以及你在做什么和如何做。
0赞
Abdul Aziz
7/28/2023
#3
检查代码库,尤其是涉及多线程或后台任务的部分。密切注意使用线程的区域,并确保适当的同步机制(如锁或信号量)到位,以防止冲突。
分析调试过程中是否有任何可能触发问题的内容。有时,复杂表达式的断点、监视或计算可能会产生意想不到的后果,导致应用在调试时的行为与正常执行不同。
我认为这些可能是罪魁祸首,请注意这些,有时build.gradle配置也会导致某些库出现问题。
快乐编码:)
评论