调试 Android 应用时出现 InterruptedException

InterruptedException when debugging Android app

提问人:Marcel Bro 提问时间:8/28/2015 更新时间:7/28/2023 访问量:2421

问:

在 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上。

我没有找到任何其他信息来帮助我们确定问题。还有其他人遇到这个问题吗?

android 调试 中断异常

评论

3赞 Brett Duncavage 8/29/2015
我目前也在 Genymotion 模拟设备上看到这个问题。不幸的是,我对这个问题没有任何见解。
0赞 K.Sopheak 12/19/2016
我在三星上遇到了同样的问题
0赞 Khizar Hayat 2/20/2017
我在调试上也遇到同样的问题,而且在实时应用程序上也面临同样的问题。 如果有人能帮忙,将不胜感激
0赞 Rahul 8/2/2017
在断点停止执行后会出现此问题吗?
0赞 Franklin Hirata 8/29/2017
这可能会令人困惑,但是,在调试时,请确保调试控制台上没有任何变量句柄。

答:

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
  1. 检查代码库,尤其是涉及多线程或后台任务的部分。密切注意使用线程的区域,并确保适当的同步机制(如锁或信号量)到位,以防止冲突。

  2. 分析调试过程中是否有任何可能触发问题的内容。有时,复杂表达式的断点、监视或计算可能会产生意想不到的后果,导致应用在调试时的行为与正常执行不同。

我认为这些可能是罪魁祸首,请注意这些,有时build.gradle配置也会导致某些库出现问题。

快乐编码:)