当我尝试使用screenshot of physical device from the Debug tab时,Android Studio有时会出现以下错误。
这些错误显示在“调试”标签的“转储#1”子标签上:
"GAC_Executor[0]@5406" prio=5 tid=0x51eb nid=NA waiting
java.lang.Thread.State: WAITING
blocks GAC_Executor[0]@5406
at java.lang.Object.wait(Object.java:-1)
at java.lang.Thread.parkFor$(Thread.java:2135)
- locked <0x1aa5> (a java.lang.Object)
at sun.misc.Unsafe.park(Unsafe.java:358)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:190)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2059)
at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1087)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1147)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
at Os.run(SourceFile:5)
at java.lang.Thread.run(Thread.java:764)
另一种错误类型:
"CrAsyncTask #1@4908" prio=5 tid=0x161 nid=NA waiting
java.lang.Thread.State: WAITING
blocks CrAsyncTask #1@4908
at java.lang.Object.wait(Object.java:-1)
at java.lang.Thread.parkFor$(Thread.java:2135)
- locked <0x180a> (a java.lang.Object)
at sun.misc.Unsafe.park(Unsafe.java:358)
at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:230)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2101)
at java.util.concurrent.ArrayBlockingQueue.poll(ArrayBlockingQueue.java:402)
at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1086)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1147)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
at java.lang.Thread.run(Thread.java:764)
另一种错误类型:
"FinalizerDaemon@6149" daemon prio=5 tid=0x158 nid=NA waiting
java.lang.Thread.State: WAITING
blocks FinalizerDaemon@6149
at java.lang.Object.wait(Object.java:-1)
at java.lang.Object.wait(Object.java:422)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:188)
- locked <0x1808> (a java.lang.Object)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:209)
at java.lang.Daemons$FinalizerDaemon.runInternal(Daemons.java:232)
at java.lang.Daemons$Daemon.run(Daemons.java:103)
at java.lang.Thread.run(Thread.java:764)
另一种错误类型:
"CleanupReference@5418" daemon prio=5 tid=0x16b nid=NA waiting
java.lang.Thread.State: WAITING
blocks CleanupReference@5418
at java.lang.Object.wait(Object.java:-1)
at java.lang.Object.wait(Object.java:422)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:188)
- locked <0x180e> (a java.lang.Object)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:209)
at ayH.run(SourceFile:3)
另一种错误类型:
"ReferenceQueueDaemon@6148" daemon prio=5 tid=0x157 nid=NA waiting
java.lang.Thread.State: WAITING
blocks ReferenceQueueDaemon@6148
at java.lang.Object.wait(Object.java:-1)
at java.lang.Daemons$ReferenceQueueDaemon.runInternal(Daemons.java:178)
- locked <0xc44> (a java.lang.Class)
at java.lang.Daemons$Daemon.run(Daemons.java:103)
at java.lang.Thread.run(Thread.java:764)
另一种错误类型:
"FinalizerWatchdogDaemon@6150" daemon prio=5 tid=0x159 nid=NA sleeping
java.lang.Thread.State: TIMED_WAITING
blocks FinalizerWatchdogDaemon@6150
at java.lang.Thread.sleep(Thread.java:-1)
at java.lang.Thread.sleep(Thread.java:373)
- locked <0x1809> (a java.lang.Object)
at java.lang.Thread.sleep(Thread.java:314)
at java.lang.Daemons$FinalizerWatchdogDaemon.sleepFor(Daemons.java:342)
at java.lang.Daemons$FinalizerWatchdogDaemon.waitForFinalization(Daemons.java:364)
at java.lang.Daemons$FinalizerWatchdogDaemon.runInternal(Daemons.java:281)
at java.lang.Daemons$Daemon.run(Daemons.java:103)
at java.lang.Thread.run(Thread.java:764)
通常,我可以通过重新启动Android Studio来解决此问题,但今天我可以更一致地得到它。
我也尝试过重新启动Mac,重新启动Nexus 5x物理设备,将设备重新插入其他端口并发出adb kill-server
命令。这些都没有帮助。
任何人都知道导致此问题的原因以及如何避免它吗?
答案 0 :(得分:1)
这可能来自Android Studio 3.2。您可以将其更新为较新的版本吗?
我在Mac上使用3.2.1(2018年10月9日)没有任何问题。
答案 1 :(得分:1)
如果将调试器附加到应用程序,然后尝试在“工具Windows”>“调试”中按摄像机图标,就会发生这种情况。实际上,调试窗口上的摄像机图标用于线程转储,而不用于屏幕截图。因此,这具有误导性。
您必须按Logcat窗口>摄像机。请按照
中提到的以下说明进行操作https://developer.android.com/studio/debug/am-screenshot
在连接的设备或仿真器上运行您的应用程序。如果使用连接的设备,请确保已启用USB调试。 在Android Studio中,选择“视图”>“工具窗口”>“ Logcat”以打开Logcat。 从窗口顶部的下拉列表中选择设备和进程。 单击窗口左侧的“截屏”。