AVCaptureSession的stopRunning - 什么时候打电话

时间:2015-08-04 21:06:18

标签: ios swift avfoundation

我制作了一个拍照的应用。它由两个通过tabBarController连接的视图控制器组成。其中一个viewControllers是相机屏幕。它有UIView,其唯一目的是显示AVCaptureVideoPreviewLayer的内容。

我已经连接了输入和输出,并在我的UIView上显示了相机视图的实时反馈。由于我有tabBarController连接的2个视图控制器,因此当用户选中其他viewController时,我确保每当我不在相机的viewController上时调用stopRunning

目前,我已将其实施如下:

override func viewWillAppear(animated: Bool) {
    super.viewWillAppear(animated)
    session.startRunning()
}

override func viewWillDisappear(animated: Bool) {
    super.viewWillDisappear(animated)
    session.stopRunning()
}

每当我在相机屏幕上运行会话时,我的iPhone 5就会升温 - 这是我预期的 - 可能是由于AVCaptureVideoPreviewLayer对象对资源的需求。我的上述尝试是在session停止不需要的地方。但是,我觉得我还没有覆盖所有的理由。

如果我的应用转到后台,session会继续吗?我使用了一些println语句来跟踪我的viewController生命周期方法,并发现当app退役到后台时不会调用viewWillDisappear

这是否意味着我的session继续投放并且我的相机仍在尝试提供Feed?我怀疑这可能是一个问题,因为手机在很长一段时间后仍然会感到温暖。

0 个答案:

没有答案