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

时间:2013-05-03 08:42:28

标签: iphone ios objective-c

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

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

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

3 个答案:

答案 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分钟的运行时间,或本地通知通知用户。