web-dev-qa-db-ja.com

Androidのサービス、intentServiceの違いは何ですか?

AndroidのServiceIntentServiceの違いは何ですか?

AndroidのAsyncTaskIntentServiceの違いは何ですか?

23
vijaycaimi

1。 ServiceとIntentServiceの違い

Service:これはAndroidサービスの基本クラスであり、任意のサービスを作成するために拡張できます。 UIスレッド内で実行されるサービスでは、作業を実行するための作業スレッドを作成する必要があります。

IntentServiceServiceのサブクラスであり、作業を簡素化します。既に動作中のスレッドで動作し、非同期リクエストを受信できます。そのため、手動で作成したり、同期を心配したりする必要はありません。単純に拡張してメソッドをオーバーライドできます。

_onHandleIntent(Intent intent)
_

すべての着信要求を管理できます。

documentation を見ると、IntentServiceが何をしているかを詳しく見ることができます:

  • アプリケーションのメインスレッドとは別にonStartCommand()に配信されるすべてのインテントを実行するデフォルトのワーカースレッドを作成します。
  • 一度に1つのインテントをonHandleIntent()実装に渡す作業キューを作成するため、マルチスレッドを心配する必要はありません。
  • すべての開始要求が処理された後にサービスを停止するため、stopSelf()を呼び出す必要はありません。
  • Nullを返すonBind()のデフォルト実装を提供します。
  • onStartCommand()のデフォルトの実装を提供します。これは、インテントを作業キューに送信し、次にonHandleIntent()実装に送信します。

したがって、さらに制御が必要な場合はServiceクラスを使用できますが、多くの場合、単純なサービスの場合の最適なソリューションはIntentServiceです。

2。 AsyncTaskとServiceの違い

それらは2つの異なる概念です。

Service:は、インターフェースのないアクティビティとして使用できます。長時間の操作に適しています。

AsyncTask:は、作業スレッドをラップする(バックグラウンド操作を実行する)特定のクラスであり、スレッドまたはハンドラーを直接管理せずに、UIスレッドとの対話を容易にします。

35
GVillani82

つまり、サービスは開発者がバックグラウンド操作を設定するためのより広範な実装であり、IntentServiceはバックグラウンドスレッドの作成とクリーンアップを処理する「ファイアアンドフォーゲット」操作に役立ちます。

ドキュメントから:

サービスサービスは、ユーザーと対話せずに長時間実行する操作を実行するか、他のアプリケーションが使用する機能を提供するというアプリケーションの要望を表すアプリケーションコンポーネントです。

IntentService IntentServiceは、オンデマンドで非同期要求(Intentとして表現される)を処理するサービスの基本クラスです。クライアントはstartService(Intent)呼び出しを介してリクエストを送信します。サービスは必要に応じて開始され、ワー​​カースレッドを使用して各Intentを順番に処理し、仕事が尽きたときに停止します。

Service vs IntentService

IntentServiceとサービスの違いは何ですか?

0
saurabh