2013-05-03 83 views
8

我使用NSTimer在1秒後調用一個方法,當應用程序在後臺運行並且在將近17分鐘後定時器停止工作。NSTimer在一段時間後在後臺停止

當它回到前臺時它又開始工作了,所以請告訴我爲什麼會發生這種情況以及如何解決問題。

我也嘗試使用執行選擇器與延遲遞歸出於同樣的目的,但再次給出相同的結果。請提出任何解決方案。任何幫助將完全讚賞。

+0

計時器有什麼作用?我的意思是,蘋果的許可後臺任務之一是? – jcesarmobile 2013-05-03 08:46:47

+0

您在構建目標屬性中設置了什麼「所需的背景模式」? – 2013-05-03 08:46:54

+0

我在我的必填背景模式中添加了「位置更新的應用程序註冊」 – Himanshu 2013-05-03 09:53:32

回答

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

我已經使用了此功能,但在後臺將近16分鐘後仍然停止計時 – Himanshu 2013-05-03 10:42:21

+0

請看到這個,讓我知道它是否工作。 http://stackoverflow.com/questions/8449351/iphone-4-is-there-an-absolutely-certain-way-to-have-a-long-term-nstimer-fire?rq=1 – Xcoder 2013-05-03 11:23:26

+0

@himanshu:是你的問題得到解決。我面臨同樣的問題.. – Ankur 2013-09-03 10:48:07

5

Implementing Long-Running Background Tasks

對於需要更多的執行時間來實現,你必須要求特定的權限,在後臺運行,他們沒有他們被暫停的任務。在iOS中,只有特定的應用程序類型被允許在後臺運行:

  • 應用程式播放音頻內容給用戶,同時在後臺運行,如音樂播放器應用程序
  • 應用程序,使用戶瞭解自己的在任何時候,如導航應用
  • 應用,支持互聯網語音協議(VoIP)
  • 報刊雜誌的應用程序,需要下載和處理新的內容,從外部附件
  • 接收定期更新
  • 應用程序的位置
0

如果幾分鐘是不夠的,你不能在backgorund除非它使用一個應用程序運行無限時間:

  • 音頻播放
  • 位置服務
  • 外部附件

您可以使用後臺任務爲所有其他應用程序獲取10分鐘的運行時間,或者使用本地通知通知用戶。

+0

我使用位置服務的背景模式,但仍然計時器停止 – Himanshu 2013-05-10 05:08:26

相關問題