我正在创建播放 youtube 视频的应用。
在这个应用程序中,
用户可以播放 youtube 视频,当用户进入后台或锁定手机时,将播放视频的声音
我正在使用 UIApplicationDidEnterBackgroundNotification播放背景视频我没有删除UIApplicationDidEnterBackgroundNotification在 viewDidDisappear因为我想播放整个应用程序的视频声音
这是代码
override func viewDidLoad() {
super.viewDidLoad()
NSNotificationCenter.defaultCenter().removeObserver(self, name: UIApplicationDidEnterBackgroundNotification, object: nil)
NSNotificationCenter.defaultCenter().addObserver(self, selector: "playBgVideo", name: UIApplicationDidEnterBackgroundNotification, object: nil)
}
func playBgVideo()
{
bgTimer = NSTimer.scheduledTimerWithTimeInterval(0.01, target: self, selector: "hello", userInfo: nil, repeats: true)
NSNotificationCenter.defaultCenter().addObserver(self, selector: "playFgVideo", name: UIApplicationWillEnterForegroundNotification, object: nil)
}
func hello()
{
player?.play()
}
func playFgVideo()
{
bgTimer?.invalidate()
NSNotificationCenter.defaultCenter().removeObserver(self, name:UIApplicationWillEnterForegroundNotification, object: nil)
}
当我第一次播放视频时,由于 UIApplicationDidEnterBackgroundNotification,后台播放工作完美调用一次,但我播放第二个视频然后后台播放不起作用,因为 UIApplicationDidEnterBackgroundNotification调用了两次
给我建议,我该如何解决这个问题?
谢谢
最佳答案
我的建议是在 NSNotificationCenter.defaultCenter().removeObserver(self, name: UIApplicationDidEnterBackgroundNotification, object: nil) 设置一个断点并确保 self 有相同的内存地址(我认为它会有不同)。一般来说,这意味着:
viewDidLoad() 时,您注销了一个不存在的
观察者(但你应该有异常(exception))。self,然后由计时器保留。这一切都会重复。附言通常,您似乎希望调用 dealloc 以便执行清理或者根本不处理 dealloc。
关于ios - UIApplicationDidEnterBackgroundNotification 多次调用 swift 2.0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33887968/