2012-04-24 13 views
1

私のアプリケーションはGPSをサポートしており、フォアグラウンドとバックグラウンドの両方で動作します。私は、デバイスがロックされていない限り、完全に動作しているタイマーを起動しました。 デバイスがロックされているときでもタイマーを実行し続けたい。デバイスがロックされているとNSTimerが終了する

これはどのように行うことができますか?

答えて

3

あなたはタイマーを開始どちらの方法で、デフォルトの実行モードは以下のようなものです:

NSDefaultRunLoopModeを使用して
 Timer *timer = [NSTimer scheduledTimerWithTimeInterval:5 target:self selector:@selector(run) userInfo:nil repeats:YES]; 

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

。柔軟性が必要な場合は、forModeをNSRunLoopCommonModesに変更してください。

+0

NSRunLoopを使用すると、タイマーはiPhoneのステータスに関係なく実行されます。私は正しい? – Perseus

+1

NSRunLoopは常に使用され、メインアプリケーションスレッドのバックボーンです。 NSTimersがスケジュールされています。実行モードでスケジュールされ、実行モードが中断されるかどうかが決定されます。デフォルトはあまり良くありません。スクロールビューのようなものによって中断されます。テストしてからしばらくしていますが、共通モードは中断されることはめったにありません。私はそれがあなたが必要とするもののためにうまくいくと確信しています。 Appleはこれらのモードを中断するものの非常に良い説明を提供していません –

+0

説明をありがとう:)デバイスがオフになっている場合を除き、タイマーが私のアプリケーションで動作し続けることを願っています。 – Perseus

関連する問題