【发布时间】:2020-01-28 12:07:28
【问题描述】:
来自文档:
创建会话是一项昂贵的操作,可能需要数百毫秒,因为它需要配置相机设备的内部管道并分配内存缓冲区以将图像发送到所需的目标。因此设置是异步完成的,CameraDevice#createCaptureSession 和 CameraDevice#createReprocessableCaptureSession 会将准备使用的 CameraCaptureSession 发送到提供的侦听器的 CameraCaptureSession.StateCallback#onConfigured 回调。
但是,我收到了由 createCaptureSession() 引起的 ANR:
AppNotResponding : Application not responsive since: Fri Jan 17 17:19:26 GMT+01:00 2020
at android.os.BinderProxy.transactNative(BinderProxy.java)
at android.os.BinderProxy.transact(BinderProxy.java:510)
at android.hardware.camera2.ICameraDeviceUser$Stub$Proxy.endConfigure(ICameraDeviceUser.java:719)
at android.hardware.camera2.impl.ICameraDeviceUserWrapper.endConfigure(ICameraDeviceUserWrapper.java:114)
at android.hardware.camera2.impl.CameraDeviceImpl.configureStreamsChecked(CameraDeviceImpl.java:476)
at android.hardware.camera2.impl.CameraDeviceImpl.createCaptureSessionInternal(CameraDeviceImpl.java:664)
at android.hardware.camera2.impl.CameraDeviceImpl.createCaptureSession(CameraDeviceImpl.java:512)
我没有在代码示例中看到 createCaptureSession() 调用是在后台线程上进行的。通常有一个处理程序被传递,所以只有回调会在后台线程上执行?
【问题讨论】: