3

是否还有其他人在新 iPhone X上停用应用程序时遇到applicationDidBecomeActive错误触发的问题?

这是我的测试应用程序:

class ViewController: UIViewController {

    required init?(coder aDecoder: NSCoder) {
        super.init(coder:aDecoder)
        NotificationCenter.default.addObserver(
            self,
            selector: #selector(fired),
            name: .UIApplicationDidBecomeActive,
            object: nil
        )
    }

    @objc func fired(_:Any) {
        print("fired")
    }

}

在 iPhone X 模拟器上运行应用程序。自然,我在控制台中看到“解雇”。到现在为止还挺好。现在向侧面或向上滑动主页指示器,以切换到不同的应用程序或调出应用程序切换器。我看到控制台中再次出现“fired”!

这似乎是错误的,并且将我所有的应用程序都扔进了混乱中。我该如何应对在停用时收到激活通知?

4

1 回答 1

2

事实上,当应用程序在 iPhone X 模拟器中停用时,会快速连续触发三个通知:

  1. UIApplicationWillResignActive
  2. UIApplicationDidBecomeActive
  3. UIApplicationWillResignActive

这是错误的(您可能想要提交错误报告),但如果用户快速停用 - 激活 - 停用应用程序,则可能会发生这种情况,因此应用程序无论如何都应该应对这种情况。

两个通知必须以对称的方式处理(并且它们得到适当的平衡,即使存在那个错误):在“激活”上执行的操作必须在“停用”上反转。

于 2017-09-21T19:49:28.703 回答