applicationDidBecomeActive在iPhone X上停用时触发

时间:2017-09-21 18:05:34

标签: ios iphone-x

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

这是我的测试应用程序:

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模拟器上运行该应用程序。当然,我在控制台中看到“被解雇”。到现在为止还挺好。现在向侧面或向上滑动家庭指示器,切换到其他应用程序或调出应用程序切换器。我看到“解雇”再次出现在控制台中!

这似乎是错误的,并且把我的所有应用程序都扔进了一个混乱的地方。如何处理停用时获取激活通知?

1 个答案:

答案 0 :(得分:2)

事实上,当iPhone X Simulator中的应用程序停用时,有三个快速连续发出的通知:

  1. UIApplicationWillResignActive
  2. UIApplicationDidBecomeActive
  3. UIApplicationWillResignActive
  4. 这是错误的(您可能想要提交错误报告),但如果用户可能会发生错误 停用 - 激活 - 快速停用应用程序,以便应用程序 无论如何应该应对这种情况。

    两个通知都必须以对称的方式处理(即使有了这个bug,它们也会得到适当的平衡):完成的操作 “激活”必须在“停用”时反转。