サーバーからデータをダウンロードするがあり、一定の間隔でサーバーの更新をチェックしIntentService
たいと考えています。IntentService
ただし、次の投稿ではService
、 - を使用して a を繰り返さないようにアドバイスしTimer
、代わりに を使用することを強調していAlarmManager
ます。
サービスが Android で動作しないのはなぜですか? (5秒ごとに何かを記録したいだけです)
Android のリファレンス マニュアルでは、IntentService は次のように説明されています。
IntentService は、オンデマンドで非同期要求 (インテントとして表現) を処理するサービスの基本クラスです。クライアントは startService(Intent) 呼び出しを介してリクエストを送信します。サービスは必要に応じて開始され、ワーカー スレッドを使用して各インテントを順番に処理し、作業がなくなると停止します。
この「ワーク キュー プロセッサ」パターンは、アプリケーションのメイン スレッドからタスクをオフロードするために一般的に使用されます。IntentService クラスは、このパターンを簡素化し、メカニズムを処理するために存在します。これを使用するには、IntentService を拡張し、onHandleIntent(Intent) を実装します。IntentService はインテントを受け取り、ワーカー スレッドを起動し、必要に応じてサービスを停止します。
すべてのリクエストは 1 つのワーカー スレッドで処理されます。必要なだけ時間がかかる場合がありますが (アプリケーションのメイン ループをブロックすることはありません)、一度に処理されるリクエストは 1 つだけです。
私が本当に理解していない部分は、実行のために独自のワーカースレッドを作成するため、タイマーを使用して繰り返し実行することが許可されていない理由IntentService
です。内でa を使用することは許されますか? または、定期的に実行する唯一のソリューションですか?Service
IntentService
Timer
IntentService
AlarmManagers
IntentService
これについての説明をいただければ幸いです。