Один из официальных образцов Google для Camera2 API имеет та же самая проблема BufferQueue has been abandoned
, как показано в:
В частности, пример приложения вызывает метод closeCamera()
из onPause()
фрагмента, где closeCamera()
вызывает close()
на CameraCaptureSession
, затем close()
на CameraDevice
, затем close()
на ImageReader
(используется для фактической съемки). После close()
on CameraDevice
, когда в LogCat появляется несколько вхождений вышеупомянутого сообщения BufferQueue has been abandoned
, хотя я получаю сообщение только на некоторых устройствах Android 5.1 (Nexus 4 и Nexus 7 2013), а не на других (Nexus 5 и Nexus 6).
Комментарий fadden:
Если пользовательская сторона закрыта перед вводом onPause(), сообщения ожидаются.
Когда TextureView
"сторона потребителя" будет закрыта, и почему тогда?
Код примера Google не проактивно ничего не делает, чтобы закрыть TextureView
, который я вижу. И, поскольку TextureView
все еще может быть видимым при паузе, я ожидал, что "потребительская сторона" не будет затронута во время onPause()
, но, возможно, позже в onStop()
.
Хотя я понимаю, что это сообщение (несмотря на ошибку) является доброкачественным, я пытаюсь понять, как избавиться от него, если не по какой-либо другой причине, чем для того, чтобы не дать мне снова и снова спрашивать, почему мой код регистрирует эту ошибку. Я надеюсь, что, понимая больше об этой "стороне потребителя", я могу понять, как лучше убирать вещи, когда пользователь выходит из действия или фрагмента, использующего Camera2, и избегает этой ошибки.