当应用程序进入后台并且经过约1秒钟后,我使用NSTimer调用一个方法,但是在大约17分钟后计时器停止工作。
当应用程序回到前台时,计时器重新开始工作。请告诉我为什么会发生这种情况,以及如何解决该问题。
我还尝试使用延迟递归中的perform selector来实现相同的目的,但结果仍然相同。请提供任何解决方案。非常感谢您的帮助。
当应用程序进入后台并且经过约1秒钟后,我使用NSTimer调用一个方法,但是在大约17分钟后计时器停止工作。
当应用程序回到前台时,计时器重新开始工作。请告诉我为什么会发生这种情况,以及如何解决该问题。
我还尝试使用延迟递归中的perform selector来实现相同的目的,但结果仍然相同。请提供任何解决方案。非常感谢您的帮助。
奇怪的问题-我也遇到过这个问题,但是以下方法对我有效。
//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分钟的运行时间,或使用本地通知来通知用户。