胡东东博客

老版本GPUImage进入后台闪退问题


这个BUG新版本已经解决,在老版本中会存在这个问题,原因是GPUImage是基于OpenGL 的,而OpenGL ES在进入后台后是直接退出的,所以需要注册通知监听程序进入后台(UIApplicationWillResignActiveNotification)和进入前台(UIApplicationDidBecomeActiveNotification),然后做出相应的动作。
通过下面方法即可解决相机界面进入后台崩溃的问题。

[[NSNotificationCenter defaultCenter] addObserver:_aSharedJLXCommonTools selector:@selector(pauseRecord) name:UIApplicationWillResignActiveNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:_aSharedJLXCommonTools selector:@selector(resumeRecord) name:UIApplicationDidBecomeActiveNotification object:nil];

如果是在打开相机界面的崩溃

- (void)goToBack

{

  [self.stillCamera pauseCameraCapture];

  [self.stillCamera stopCameraCapture];

  runSynchronouslyOnVideoProcessingQueue(^{

      glFinish();

});

}

- (void)gotoFore

{

[self.stillCamera resumeCameraCapture];

[self.stillCamera startCameraCapture];

}

而如果是在加水印等生成的过程中崩溃的,就可以先停止,等重新进入的时候再处理

-(void)pauseRecord{
    if (self.startMakeVideo) {
        [movieWriter cancelRecording];
        [movieFile cancelProcessing];
    }
}

-(void)resumeRecord{
    if (self.startMakeVideo) {
        [self saveVedioPath:m_vedioPath WithFileName:m_fileName andCallBack:self.completionHandler];
    }
}

参考文章

当前页面是本站的「Baidu MIP」版。查看和发表评论请点击:完整版 »