Приложение iOS Detect переместилось в фоновый режим без наблюдателей - PullRequest
0 голосов
/ 02 июня 2019

Приложение имеет анимацию, которая останавливается, когда приложение переходит в фоновый или передний план, и перезапускается, когда приложение снова становится активным.

Как я могу сделать это без использования наблюдателей?Я читал в других темах, что этот способ не является хорошей практикой, и приложение может аварийно завершить работу.

override func viewDidLoad() {
    super.viewDidLoad()

    myView.startAnimations()

    let notificationCenter = NotificationCenter.default
    notificationCenter.addObserver(self, selector: #selector(appMovedToBackground), name: UIApplication.didEnterBackgroundNotification, object: nil)
    notificationCenter.addObserver(self, selector: #selector(appMovedToForeground), name: UIApplication.willEnterForegroundNotification, object: nil)
    notificationCenter.addObserver(self, selector: #selector(appBecomeActive), name: UIApplication.didBecomeActiveNotification, object: nil)

}


override func viewWillAppear(_ animated: Bool) {
    myView.startAnimations()
}
override func viewDidDisappear(_ animated: Bool) {
    myView.stopAnimations()
}

@objc func appMovedToBackground() {
    myView.stopAnimations()
}

@objc func appMovedToForeground() {
    myView.stopAnimations()
}

@objc func appBecomeActive() {
    myView.startAnimations()
}

(отредактировано с исправлением для appMovedToForeground)

1 Ответ

0 голосов
/ 02 июня 2019

Если вы ищете стабильность и совместимость со старыми версиями iOS, я бы порекомендовал KVObserver https://github.com/postmates/PMKVObserver,, это помогает поддерживать количество наблюдателей, помогая с требованием удалить наблюдателя, когда наблюдаемый объект будет выпущен для iOS 10 и ниже.

Ваш код в порядке, просто исправьте селектор для UIApplication.willEnterForegroundNotification

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...