Camera2 API 的官方 Google 示例之一遇到了与以下所示相同的BufferQueue has been abandoned
问题:
具体来说,示例应用程序调用片段的closeCamera()
方法onPause()
,其中closeCamera()
调用close()
,CameraCaptureSession
然后close()
调用,CameraDevice
然后close()
调用ImageReader
(用于实际拍照)。在close()
开启之后,LogCat 中出现CameraDevice
了几次上述BufferQueue has been abandoned
消息,但我只在某些 Android 5.1 硬件(Nexus 4 和 Nexus 7 2013)上收到消息,而在其他硬件(Nexus 5 和 Nexus 6)上没有收到消息。
fadden 对此的评论是:
如果消费者端在进入 onPause() 之前关闭,则消息是预期的。
什么时候会TextureView
关闭“消费者端”,为什么?
谷歌的示例代码并没有主动做任何事情来关闭TextureView
我可以看到的。而且,由于TextureView
暂停时仍然可见,我预计“消费者方面”在 时不会受到影响onPause()
,但可能会在onStop()
.
虽然我意识到这条消息(尽管是一个错误)是良性的,但我正试图弄清楚如何摆脱它,如果没有其他原因,只是为了防止我一次又一次地被问到为什么我的代码正在记录这个错误。我希望通过更多地了解这个“消费者方面”,我可以弄清楚当用户退出使用 Camera2 的活动或片段时如何更好地整理并避免这个错误。