卡顿优化captureSession

2020-06-10  本文已影响0人  Smallwolf_JS
- (void)startRunning;

在主线程直接调用这个api会导致卡顿问题
苹果官网有指出这个需要在一个串行的异步线程中执行
官网介绍地址https://developer.apple.com/documentation/avfoundation/avcapturesession?language=objc

文档对这个方法的解释中提到了这个方法是同步方法,会阻塞当前线程,放在主线程会导致UI卡顿。
解决方式

- (void)sessionStartRunning{
    dispatch_queue_t queue = dispatch_queue_create("session Queue", DISPATCH_QUEUE_SERIAL);
    self.sessionQueue = queue;
    dispatch_async(self.sessionQueue, ^{
        [self.captureSession startRunning];
    });
}
- (void)sessionStopRunning{
    dispatch_async(self.sessionQueue, ^{
        if (self.captureSession.isRunning) {
            [self.captureSession stopRunning];
        }
    });
}
上一篇 下一篇

猜你喜欢

热点阅读