2012-04-24 95 views
1

我的應用程序支持GPS,並且它在前臺和後臺都運行。我已經啓動了一個定時器,除非設備被鎖定,否則這個定時器可以完美運行 即使設備被鎖定,我也希望計時器繼續運行。NSTimer在設備鎖定時到期

誰能告訴我怎麼做到這一點?

回答

3

無論怎樣你啓動一個定時器,默認運行方式是象下面這樣:

 Timer *timer = [NSTimer scheduledTimerWithTimeInterval:5 target:self selector:@selector(run) userInfo:nil repeats:YES]; 

    [[ NSRunLoop currentRunLoop ] addTimer:timer forMode:NSDefaultRunLoopMode ]; 

使用NSDefaultRunLoopMode。你需要更多的靈活性,所以改變模式取代NSRunLoopCommonModes,你應該沒問題。

+0

所以如果我們使用NSRunLoop,定時器將運行而不考慮iPhone的狀態。我對嗎 ? – Perseus 2012-04-26 04:28:49

+1

始終使用NSRunLoop,它是主應用程序線程的中樞。 NSTimers計劃在它上面。他們計劃與運行模式,這決定了他們是否可以被打斷或不。默認不是很好,它會被scrollviews之類的東西打斷。我已經測試了一段時間,但常見的模式很少會被打斷。我確信它可以滿足您的需求。 Apple沒有提供什麼中斷這些模式的很好的描述 – 2012-04-26 14:49:36

+0

感謝您的描述:)希望計時器將繼續在我的應用程序中運行,除非設備關閉。 – Perseus 2012-04-27 03:37:10