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