【问题标题】:AVCaptureSession blocking UI on main thread in ios8ios8主线程上的AVCaptureSession阻塞UI
【发布时间】:2014-09-25 18:05:41
【问题描述】:

我们的应用使用AVCaptureSession 进行二维码/条形码扫描。在 iOS 8 中有一个简单的关闭按钮变得无响应。

输出缓冲区似乎使主 UI 线程过载。

看起来当前输出在主线程上:

[captureOutput setSampleBufferDelegate:self queue:dispatch_get_main_queue()];

我应该在单独的线程上运行这一切吗?当前在后台线程上运行的尝试失败。

【问题讨论】:

  • 我也在尝试在单独的线程here 中执行此操作,但失败了。您是否找到了在主线程以外的线程上处理startstop 的方法?当我从非主线程startRunning 时,即使回调也不会出现。

标签: ios8 avcapturesession avcapture


【解决方案1】:

我也有类似的困难。我发现 UI 线程因我在示例缓冲区委托的 captureOutput(AVCaptureOutput, CMSampleBuffer, AVCaptureConnection) 方法中所做的工作而负担过重。我将这项工作从主线程中移开,瞧!一切都很好。

用 DispatchQueue.global() 代替 DispatchQueue.main 就可以了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多