IntentService
anと aの違いを教えてくださいService
。
8 に答える
Service
サービス実装の基本クラスです。Service
アプリケーションのメイン スレッドで実行されるため、アプリケーションのパフォーマンスが低下する可能性があります。したがって、IntentService
Service の直接のサブクラスである を使用すると、作業が簡単になります。
はIntentService
、バックグラウンドで特定のタスクを実行するために使用されます。完了すると、 のインスタンスはIntentService
自動的に終了します。その使用例は、インターネットから特定のリソースをダウンロードすることです。
違い
Service
クラスはアプリケーションのメイン スレッドIntentService
を使用し、ワーカー スレッドを作成し、そのスレッドを使用してサービスを実行します。IntentService
一度に 1 つのインテントを に渡すキューを作成しますonHandleIntent()
。したがって、マルチスレッドを実装するには、Service
クラスを直接拡張する必要があります。Service
クラスは を使用して手動で停止する必要がありますstopSelf()
。一方、IntentService
実行が終了すると、自動的に停止します。IntentService
onBind()
を返す実装null
。これは、IntentService
デフォルトではバインドできないことを意味します。IntentService
onStartCommand()
インテントを queue および に送信する実装onHandleIntent()
。
簡単に言うと、 を使用するために行うことは 2 つだけIntentService
です。まず、コンストラクターを実装します。そして第二に、実装しonHandleIntent()
ます。他のコールバック メソッドの場合、適切に追跡できるようにスーパーを呼び出す必要があります。
つまり、Service は開発者がバックグラウンド操作をセットアップするためのより広範な実装であり、IntentService はバックグラウンドの Thread の作成とクリーンアップを処理する「ファイア アンド フォーゲット」操作に役立ちます。
ドキュメントから:
サービス サービスは、ユーザーと対話せずに実行時間の長い操作を実行したい、または他のアプリケーションが使用する機能を提供したいというアプリケーションの要求を表すアプリケーション コンポーネントです。
IntentServiceサービスは、オンデマンドで非同期要求 (インテントとして表現) を処理する
IntentService サービスの基本クラスです。クライアントstartService(Intent)
は呼び出しを介してリクエストを送信します。サービスは必要に応じて開始され、ワーカー スレッドを使用して各インテントを順番に処理し、作業がなくなると停止します。
このドキュメントを参照してください - http://developer.android.com/reference/android/app/IntentService.html
service: システムのバックグラウンドで実行されます。例えば、
- ホテルに行って、サーバーにスープを注文した場合
- サーバーが注文を受け取り、シェフに送信します
- 厨房でスープがどのように作られているのか、スープを作るためにどのような工程が必要なのかわからない
- 注文の準備が整うと、サーバーがスープを持ってきます。
バックグラウンド プロセス: シェフがスープを作る
IntentService:- それは連続したサービスです.. (つまり) サーバーに一度に多くの食品を注文したが、サーバーがそれらのアイテムを 1 つずつ配送し、一度にすべてを配送しない場合。
サービス
- UI のないタスクですが、長いタスクには使用しないでください。長いタスクのサービス内でスレッドを使用する
- 呼び出し元
onStartService()
- 任意のスレッドからトリガー
- メインスレッドで実行
main(UI
)スレッドをブロックする可能性があります
インテントサービス
- 通信が必要な場合、通常、長いタスクはメインスレッドと通信せず、ハンドラーまたはブロードキャストによって行われます
- インテント経由で呼び出す
- メイン スレッドからトリガーされます (インテントはメイン スレッドで受信され、ワーカー スレッドが生成されます)
- 別スレッドで実行
- タスクを並行して実行することはできず、複数のインテントが同じワーカー スレッドでキューに入れられます。
Service
アプリの同じスレッドで実際に実行されます。Service を拡張するときは、手動で新しいスレッドを生成して、CPU ブロッキング操作を実行する必要があります。
対
IntentService
Service
そこからバックグラウンド作業を行うスレッドを生成するサブクラスです(CPU ブロッキング操作を行うために新しいスレッドを作成する必要はありません)。
Service
: メイン スレッドで動作するため、数秒後にANR (Android Not Responding) が発生します。
IntentService
:Service
別のバックグラウンド スレッドが、メイン スレッドと対話せずに何かを行うために個別に動作します。