applicationWillResignActive在iOS 10上无理由地调用(swift 3)

Fox*_*150 6 ios swift ios10

当我在iOS 10上启动我的应用程序时,我可以看到在短暂的延迟后,调用Appdelegate函数 - > applicationWillResignActive().没有理由这样做.应用程序仍然处于活动状态且处于前台状态,并且应用程序继续正常运行.

请参阅我的应用程序的生命周期:

- >单击应用程序图标

  • 应用程序启动
  • application - > didFinishLaunchingWithOptions
  • application - > applicationDidBecomeActive
  • RootViewController - > viewDidAppear
  • application - > applicationWillResignActive < - 问题!
  • application - > applicationDidBecomeActive < - 再次?? !!
  • 此时,应用程序仍在运行,没有错误

每次打开应用程序时都会重复此序列.

看起来有些东西强迫我的应用程序退出前景状态超短暂延迟.通常,当应用程序显示警报时(例如,如果应用程序需要用户访问摄像头的权限)或用户单击主页按钮时,将调用applicationDidBecomeActive.

1 - 仅当应用程序以横向模式
2 启动时才会发生- 它仅发生在iPhone上而不发生在iPad
3上 - 问题不会发生在iOS 9设备上

有没有人注意到这个问题?

aba*_*mut 4

问题是,它在消除系统服务警报(位置、推送通知、照片)后第二次调用

因此,处理它的唯一方法是在 AppDelegate 中使用变量,每次显示某些系统警报时该变量都会递增并在 中递减applicationDidBecomeActive,因此仅当该变量的值为 1 时才调用代码。

另一个有趣的事情是,applicationDidEnterBackground当系统警报显示时不会调用,因此我们可以使用此信息来决定是否应该调用我们的代码applicationDidBecomeActive(但仍然,它可能是不太可靠的解决方案)