140

IntentServiceanと aの違いを教えてくださいService

4

8 に答える 8

125

Serviceサービス実装の基本クラスです。Serviceアプリケーションのメイン スレッドで実行されるため、アプリケーションのパフォーマンスが低下する可能性があります。したがって、IntentServiceService の直接のサブクラスである を使用すると、作業が簡単になります。

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

違い

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

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

于 2012-12-28T13:43:17.717 に答える
124

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

ドキュメントから:

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

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

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

于 2011-10-14T17:55:22.577 に答える
70

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

  1. ホテルに行って、サーバーにスープを注文した場合
  2. サーバーが注文を受け取り、シェフに送信します
  3. 厨房でスープがどのように作られているのか、スープを作るためにどのような工程が必要なのかわからない
  4. 注文の準備が整うと、サーバーがスープを持ってきます。

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

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

于 2012-02-17T05:16:43.387 に答える
18

サービス

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

インテントサービス

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

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

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

于 2012-10-06T12:02:18.687 に答える
4

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

IntentService:Service別のバックグラウンド スレッドが、メイン スレッドと対話せずに何かを行うために個別に動作します。

于 2013-10-09T13:09:50.897 に答える