当应用程序进入后台并且在近 17 分钟后计时器停止工作时,我使用 NSTimer 在 1 秒后调用了一个方法。
当它回到前台时,它又开始工作了,所以请告诉我为什么会发生这种情况以及如何解决这个问题。
为了相同的目的,我还尝试使用具有递归延迟的执行选择器,但再次给出相同的结果。请提出任何解决方案。任何帮助将不胜感激。
当应用程序进入后台并且在近 17 分钟后计时器停止工作时,我使用 NSTimer 在 1 秒后调用了一个方法。
当它回到前台时,它又开始工作了,所以请告诉我为什么会发生这种情况以及如何解决这个问题。
为了相同的目的,我还尝试使用具有递归延迟的执行选择器,但再次给出相同的结果。请提出任何解决方案。任何帮助将不胜感激。
奇怪的问题-我也有这个,但以下对我有用。
//Run the timer on the runloop to ensure that it works when app is in background
[[NSRunLoop currentRunLoop]addTimer:self.timer forMode: NSDefaultRunLoopMode];
对于需要更多执行时间来实现的任务,您必须请求特定权限才能在后台运行它们而不会被挂起。在 iOS 中,只允许特定类型的应用程序在后台运行:
- 在后台向用户播放有声内容的应用程序,例如音乐播放器应用程序
- 让用户随时了解其位置的应用程序,例如导航应用程序
- 支持互联网协议语音 (VoIP) 的应用程序
- 需要下载和处理新内容的报亭应用
- 从外部配件接收定期更新的应用程序
如果几分钟还不够,你不能让应用程序在后台运行无限时间, 除非它使用:
您可以使用后台任务为所有其他应用程序获得 10 分钟的运行时间,或使用本地通知来通知用户。