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

问题描述:

当我在iOS 10上启动应用程序时,可以看到在短暂延迟之后,调用了Appdelegate函数 - > applicationWillResignActive()。 没有理由。该应用程序在发生时仍处于活动状态并处于前景状态,并且应用程序可以继续正常运行。在iOS 10上无理由调用applicationWillResignActive(swift 3)

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

- >点击应用程序图标

  • 应用程序启动
  • 应用程序 - > didFinishLaunchingWithOptions
  • 应用程序 - > applicationDidBecomeActive
  • RootViewController - > viewDidAppear
  • application - > appl icationWillResignActive < - 问题!
  • application - > applicationDidBecomeActive < - again ?? !!
  • 在这一点上,应用程序仍然没有错误

我每次打开应用程序时重复该顺序运行。

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

1 - 它仅当该应用在横向模式下开始发生
2 - 它仅发生在iPhone和不ipad公司
3 - 在iOS 9设备

没有符合人注意到上不会发生所述的问题这个问题 ?

+0

我没有遇到这个问题,无论如何你可以创建一个测试项目 – Knight0fDragon

+0

我认为这是iOS 10的一个bug,我打开了一个bug报告。 – Fox5150

+0

如果你只能遇到这个bug,那么它就是你,而不是iOS 10 – Knight0fDragon

的问题是,它驳回系统服务的警报后调用第二次(定位,推送通知,照片)

因此处理它是使用的AppDelegate varibale其中每次incremetns的必由之路一些系统警报显示和decremants在applicationDidBecomeActive,所以你打电话给你的代码只有当这个变量的值是1

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

+0

你是对的!如果你有一个系统事件监听器,我会非常感兴趣!谢谢。 – Fox5150

+0

我通过检查设备的方向来解决了我的问题,因为等待applicationDidEnterBackground在应用程序的生命周期中已经太晚了。我需要保存的数据不会保存。 – Fox5150

+0

有一个叫做'UIApplicationSuspendedNotification'的通知,在didEnterBackground之前调用,添加一个监听器,你应该可以在这个阶段保存 – Knight0fDragon