web-dev-qa-db-ja.com

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

IntentServiceServiceの違いを理解してください。

123
michael

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

ドキュメントから:

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

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

このドキュメントを参照してください- http://developer.Android.com/reference/Android/app/IntentService.html

116
Phix

Serviceは、サービス実装の基本クラスです。 Serviceは、アプリケーションのメインスレッドで実行されるため、アプリケーションのパフォーマンスが低下する場合があります。したがって、サービスの直接のサブクラスであるIntentServiceは、物事を簡単にするために使用できます。

IntentServiceは、バックグラウンドで特定のタスクを実行するために使用されます。完了すると、IntentServiceのインスタンスは自動的に終了します。その使用例は、インターネットから特定のリソースをダウンロードすることです。

  1. Serviceクラスはアプリケーションのメインスレッドを使用し、IntentServiceはワーカースレッドを作成し、そのスレッドを使用してサービスを実行します。
  2. IntentServiceは、一度に1つのインテントをonHandleIntent()に渡すキューを作成します。したがって、マルチスレッドを実装するには、Serviceクラスを直接拡張する必要があります。 Serviceクラスは、stopSelf()を使用して手動で停止する必要があります。一方、IntentServiceは、実行が終了すると自動的に停止します。
  3. IntentServiceは、nullを返すonBind()を実装します。これは、IntentServiceをデフォルトでバインドできないことを意味します。
  4. IntentServiceは、IntentをキューとonStartCommand()に送信するonHandleIntent()を実装します。

簡単に言えば、IntentServiceを使用するために行うべきことは2つだけです。まず、コンストラクターを実装します。次に、onHandleIntent()を実装します。他のコールバックメソッドの場合は、適切に追跡できるようにスーパーを呼び出す必要があります。

107
Jashan PJ

サービス:システムのバックグラウンドで実行されます。例えば、

  1. ホテルに行って、サーバーにスープを注文した場合
  2. サーバーは注文を受け取り、シェフに送信します
  3. キッチンでスープがどのように作られるか、スープを作るためにどのようなプロセスが必要かわかりません
  4. 注文の準備が整うと、サーバーからスープが届きます。

バックグラウンドプロセス:シェフがスープを作る

IntentService:-これは連続したサービスです。(つまり)一度に多くの食品を注文しますが、サーバーはそれらの商品を1つずつ配達し、一度に配達しない場合。

65
DineshKumar

このテーマについては、Tejas Lagvankarの post をご覧ください。以下は、ServiceとIntentServiceおよびその他のコンポーネントの主な違いです。

enter image description here

45
Pranav

Serviceは、実際にはアプリの同じスレッドで実行されます。サービスを拡張する場合、CPUブロッキング操作を実行するには、新しいスレッドを手動で生成する必要があります。

IntentServiceServiceのサブクラスであり、スレッドを生成してそこからバックグラウンド処理を実行します(CPUブロッキング操作を行うために新しいスレッドを作成する必要はありません)。

13
abbas.aniefa

サービス

  • UIのない​​タスク。ただし、長いタスクには使用しないでください。長いタスクのためにサービス内でスレッドを使用する
  • onStartService()による呼び出し
  • 任意のスレッドからトリガー
  • メインスレッドで実行
  • main(UI)スレッドをブロックする場合があります

IntentService

  • 通信が必要な場合、通常、長いタスクはメインスレッドと通信しません。その後、ハンドラーまたはブロードキャストによって行われます。
  • インテント経由で呼び出す
  • メインスレッドからトリガー(メインスレッドでインテントが受信され、ワー​​カースレッドが生成されます
  • 別のスレッドで実行
  • タスクを並行して実行することはできず、複数のインテントが同じワーカースレッドでキューに入れられます。
12
Umang Kothari

Service:メインスレッドで動作するため、数秒後にANR(Android Not Responding)が発生します。

IntentServiceServiceは、メインスレッドと対話せずに何かを行うために個別に動作する別のバックグラウンドスレッドを使用します。

5
Mohamed Hussien

インテントサービスはサービスの子です

IntentService:アプリを開いたときに多数の画像をダウンロードする場合。これは1回限りのプロセスであり、すべてがダウンロードされるとクリーンアップできます。

サービス:アプリとバックエンドの間でWeb API呼び出しを使用して通信するために常に使用されるサービス。現在のタスクが終了したとしても、数分後にはコミュニケーションをとるためにそれが必要です。

2
sharma_kunal