У меня есть UIView, который воспроизводит звук, имеет NSTimer и круговую анимацию прогресса.
Для простоты, если пользователь переключает приложения или отвечает на звонок, я бы хотел, чтобы все процессы останавливались и сбрасывались.
Я предлагаю использовать:
Вызов наблюдателя - возможно, в
viewWillAppear
:override func viewWillAppear(animated: Bool) { // set observer for WillEnterForeground NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(WorkoutFullFace1Exercise7TVC.willEnterBackground), name: UIApplicationDidEnterBackgroundNotification, object: nil) ...}
а также
Остановить соответствующие задачи:
// Stop all audio, timer and animation if app enters background. func willEnterBackground() { myAudioPlayer.stop() myAudioPlayer.currentTime = 0 swiftTimer.invalidate() swiftCounter = 60 timerLabel.text = String(swiftCounter) pauseBtn.alpha = 1.0 playBtn.alpha = 1.0 stopBtn.alpha = 1.0 currentCount = 0 circularProgressView.animateFromAngle(circularProgressView.angle, toAngle: 0, duration: 0.5, completion: nil) }
Уволить наблюдателя:
override func viewWillDisappear(animated: Bool) { NSNotificationCenter.defaultCenter().removeObserver(self, name: UIApplicationDidEnterBackgroundNotification, object: nil) .... }
Где правильно загружать и увольнять наблюдателя? Я читал темы, в которых говорится об использовании viewDidLoad
/ deinit
, viewWillAppear / Disappear
и т. д.
Может ли кто-нибудь пролить свет на то, что рекомендуется для моего сценария, а также на то, что является текущим и, вероятно, останется «пригодным для использования» в будущем (язык и практика, похоже, быстро меняются в мире программирования).
И я использую правильный синтаксис выше?
Спасибо!