AndroidのService
とIntentService
の違いは何ですか?
AndroidのAsyncTask
とIntentService
の違いは何ですか?
1。 ServiceとIntentServiceの違い
Service:これはAndroidサービスの基本クラスであり、任意のサービスを作成するために拡張できます。 UIスレッド内で実行されるサービスでは、作業を実行するための作業スレッドを作成する必要があります。
IntentService:Service
のサブクラスであり、作業を簡素化します。既に動作中のスレッドで動作し、非同期リクエストを受信できます。そのため、手動で作成したり、同期を心配したりする必要はありません。単純に拡張してメソッドをオーバーライドできます。
_onHandleIntent(Intent intent)
_
すべての着信要求を管理できます。
documentation を見ると、IntentService
が何をしているかを詳しく見ることができます:
onStartCommand()
に配信されるすべてのインテントを実行するデフォルトのワーカースレッドを作成します。onHandleIntent()
実装に渡す作業キューを作成するため、マルチスレッドを心配する必要はありません。stopSelf()
を呼び出す必要はありません。onBind()
のデフォルト実装を提供します。onStartCommand()
のデフォルトの実装を提供します。これは、インテントを作業キューに送信し、次にonHandleIntent()
実装に送信します。したがって、さらに制御が必要な場合はService
クラスを使用できますが、多くの場合、単純なサービスの場合の最適なソリューションはIntentService
です。
2。 AsyncTaskとServiceの違い
それらは2つの異なる概念です。
Service:は、インターフェースのないアクティビティとして使用できます。長時間の操作に適しています。
AsyncTask:は、作業スレッドをラップする(バックグラウンド操作を実行する)特定のクラスであり、スレッドまたはハンドラーを直接管理せずに、UIスレッドとの対話を容易にします。
つまり、サービスは開発者がバックグラウンド操作を設定するためのより広範な実装であり、IntentServiceはバックグラウンドスレッドの作成とクリーンアップを処理する「ファイアアンドフォーゲット」操作に役立ちます。
ドキュメントから:
サービスサービスは、ユーザーと対話せずに長時間実行する操作を実行するか、他のアプリケーションが使用する機能を提供するというアプリケーションの要望を表すアプリケーションコンポーネントです。
IntentService IntentServiceは、オンデマンドで非同期要求(Intentとして表現される)を処理するサービスの基本クラスです。クライアントはstartService(Intent)呼び出しを介してリクエストを送信します。サービスは必要に応じて開始され、ワーカースレッドを使用して各Intentを順番に処理し、仕事が尽きたときに停止します。