1
私のアプリケーションはGPSをサポートしており、フォアグラウンドとバックグラウンドの両方で動作します。私は、デバイスがロックされていない限り、完全に動作しているタイマーを起動しました。 デバイスがロックされているときでもタイマーを実行し続けたい。デバイスがロックされているとNSTimerが終了する
これはどのように行うことができますか?
私のアプリケーションはGPSをサポートしており、フォアグラウンドとバックグラウンドの両方で動作します。私は、デバイスがロックされていない限り、完全に動作しているタイマーを起動しました。 デバイスがロックされているときでもタイマーを実行し続けたい。デバイスがロックされているとNSTimerが終了する
これはどのように行うことができますか?
あなたはタイマーを開始どちらの方法で、デフォルトの実行モードは以下のようなものです:
NSDefaultRunLoopMode
を使用して
Timer *timer = [NSTimer scheduledTimerWithTimeInterval:5 target:self selector:@selector(run) userInfo:nil repeats:YES];
[[ NSRunLoop currentRunLoop ] addTimer:timer forMode:NSDefaultRunLoopMode ];
。柔軟性が必要な場合は、forModeをNSRunLoopCommonModes
に変更してください。
NSRunLoopを使用すると、タイマーはiPhoneのステータスに関係なく実行されます。私は正しい? – Perseus
NSRunLoopは常に使用され、メインアプリケーションスレッドのバックボーンです。 NSTimersがスケジュールされています。実行モードでスケジュールされ、実行モードが中断されるかどうかが決定されます。デフォルトはあまり良くありません。スクロールビューのようなものによって中断されます。テストしてからしばらくしていますが、共通モードは中断されることはめったにありません。私はそれがあなたが必要とするもののためにうまくいくと確信しています。 Appleはこれらのモードを中断するものの非常に良い説明を提供していません –
説明をありがとう:)デバイスがオフになっている場合を除き、タイマーが私のアプリケーションで動作し続けることを願っています。 – Perseus