一段时间后,NSTimer在后台停止

Him*_*shu 8 iphone objective-c ios

当应用程序进入后台时,我使用NSTimer在1秒后调用方法,并且在将近17分钟后计时器停止工作.

当它回到正轨时它再次开始工作,所以请告诉我为什么会发生这种情况以及如何解决这个问题.

为了同样的目的,我也尝试使用递归延迟的执行选择器,但同样给出相同的结果.请建议任何解决方案.任何帮助将完全赞赏.

Xco*_*der 6

奇怪的问题 - 我也有这个问题,但以下对我有用.

 //Run the timer on the runloop to ensure that it works when app is in background

  [[NSRunLoop currentRunLoop]addTimer:self.timer forMode: NSDefaultRunLoopMode];
Run Code Online (Sandbox Code Playgroud)


Bon*_*nie 5

实现长期运行的后台任务:

对于需要执行更多执行时间的任务,您必须请求特定权限才能在后台运行它们而不会被挂起.在iOS中,只允许在后台运行特定的应用类型:

  • 在后台播放用户可听内容的应用,例如音乐播放器应用
  • 随时向用户通知其位置的应用,例如导航应用
  • 支持互联网协议语音(VoIP)的应用
  • 需要下载和处理新内容的报亭应用程序
  • 从外部配件接收定期更新的应用程序