Android 当 运行 应用程序通过 USB phone 时,Studio 向控制台发送垃圾邮件 "I/SurfaceView: ..." 消息

Android Studio spamming "I/SurfaceView: ..." messages to console when running app through USB phone

抱歉标题模糊。当我 运行 我的应用程序在模拟器设备上时,在本例中是 Nexus 5x(Android 8.1,API 27),一切都很好。但是,当 运行 通过 USB 在真实设备上运行应用程序时,该设备是 Xperia XA1 Ultra(Android 7.0,API 24),控制台输出 window 会收到垃圾邮件这个:

I/SurfaceView: Punch a hole(dispatchDraw), this = com.example.xlog.fighter.GamePanel{d2bce30 VFE...... ......I. 0,0-1776,1080}
I/SurfaceView: 155302755 Locking canvas... stopped=false, win=android.view.SurfaceView$MyWindow@9a72360
I/SurfaceView: 155302755 Returned canvas: android.view.Surface$CompatibleCanvas@5318019

不知道这三行是按什么顺序输出的

我的应用正在使用 SurfaceView 进行绘制。该应用程序运行良好,并且在模拟器和物理设备上的行为相同。为什么在物理设备上 运行ning 时这些邮件会像这样被发送垃圾邮件?发生这种情况时,我什至无法使用打印进行调试。

垃圾邮件行在 运行 window 中输出。我可以折叠它们,这样就不会那么烦人了,但关键是为什么会这样?

我知道这是一个旧的 post 但我在同一个 phone 上遇到了同样的问题,我找到了解决方案。希望这对某人有帮助。

无论如何,根据SurfaceView documentation

The surface is Z ordered so that it is behind the window holding its SurfaceView; the SurfaceView punches a hole in its window to allow its surface to be displayed.

因此,如果您在自定义表面视图 init 中设置 setZOrderOnTop(true);,烦人的消息泛滥就会消失。