それらは、さまざまな目的のために非常に異なる方法で使用できます。
AsyncTask
は、ユーザーに常に何かを伝えたり、メイン スレッドで定期的に操作を実行したりする必要がある場合に使用できる、便利なスレッド ユーティリティです。それは多くのきめ細かな制御を提供し、その性質のために で作業するのは非常に簡単ですがActivity
、IntentService
通常はBroadcastReceiver
またはIBinder
フレームワークを使用する必要があります。
IntentService
のように使用できますがAsyncTask
、その目的は、バックグラウンドでのダウンロード、アップロード、またはユーザーの操作やメイン スレッドを必要としないその他のブロック操作を目的としています。たとえば、マップをダウンロードしてキャッシュする場合は、 を呼び出して、ダウンロードするIntentService
ためにユーザーがアプリを見なくても済むようにすることができます。同様に、サーバーにデータを送信する場合、IntentService
開始して忘れることができるため、この点で非常に役立ちます。ユーザーは、たとえば、アプリにコメントを入力してから「送信」を押すことができます。「送信」はIntentService
、コメントを取得する を起動し、バックグラウンド スレッドでサーバーに送信します。ユーザーは「送信」を押してすぐにアプリを離れることができ、コメントは最終的に、それでもサーバーに到達します(もちろんエラーがないことを前提としています)。これをAsyncTask
Activity
一方、システムは交換の途中でプロセスを強制終了する可能性があり、処理が完了する場合と行われない場合があります。
一般的に言えば、どちらも長時間実行されるアプリケーション向けではありません。これらは、短時間の 1 回限りの操作を対象としています。永続的または長時間実行されるアクションに使用できますが、お勧めしません。