これらは、さまざまな目的で非常に異なって使用できます。
AsyncTask
は、ユーザーに常に何かを伝えたり、定期的にメインスレッドの操作を行う必要がある場合に使用できる便利なスレッドユーティリティです。ファイングレイン制御が多く、Activity
で動作するのは非常に簡単であるため、IntentService
は、一般にBroadcastReceiver
またはIBinder
フレームワークを使用する必要があります。
IntentService
は、AsyncTask
と非常によく似ていますが、バックグラウンドのダウンロード、アップロード、その他のユーザー操作やメインスレッドを必要としないブロック操作を目的としています。たとえば、マップをダウンロードしてキャッシュする場合は、IntentService
に電話して、ダウンロードするアプリをユーザーが見ている必要がないようにすることができます。同様に、サーバーにデータを送信している場合は、IntentService
がこの点で非常に役立ちます。なぜなら、開始して忘れることができるからです。ユーザーは、アプリにコメントを入力してから「送信」を押すことができます。 「送信」は、IntentService
を起動し、コメントを取得してバックグラウンドスレッドでサーバーに送信します。ユーザーは「送信」を押してアプリをすぐに離れることができ、コメントは最終的にはサーバーに到達します(もちろんエラーはないものとします)。一方でのAsyncTask
でこれを行った場合、システムは交換の途中でプロセスを停止させる可能性があり、処理が進まない場合があります。
一般に、いずれも長時間実行するアプリケーション向けではありません。彼らは短く、一度だけの操作を意味します。彼らは永続的な、または長期的な行動のために使用することができますが、推奨されていません。
ありがとうございます。 IntentServiceを使用するタスクの例を教えてもらえますか? –
アプリ上の特定の地域の歩道を保存しているとします(「お気に入り」など)。最新の状態にしたい場合は、毎日実行する 'IntentService'を設定し、それらの地域の変更をチェックしてください。 – ebarrenechea
ああ、そうだ。だから、それは私たちの携帯電話のFacebookやGmailの通知のようなものだと思いますか? –