実用的なアプリケーションシナリオIntentService

    IntentServiceは親サービスに比べて、最大の特徴はonHandleIntentが再オープンスレッドにせずに、直接、時間のかかる操作することができ、そのコールバック関数です。原理はハンドラが既にワーカースレッドで実行onHandleIntent他の機能を含む、のhandleMessage後、ワーカースレッドに属している場合IntentServiceメンバ変数が初期化されています。

    あなたが限られのIntentServiceを知っている場合は、開いているスレッドがないトラブルで時間のかかる操作のサービスので、ビューの種類IntentService非常に悲しいポイントになります。私もそれはほとんどIntentService使用されていない、この観点を持っていました。

    しかしIntentServiceより時間のかかるタスクが順番に実行され、複数回onHandleIntent機能(実行するより時間のかかるタスクがあるされている)と呼ばれる機能があります。原理は内蔵のタスクキューハンドラ、ハンドラルーパーに関連付けられている順に実行されるタスクを取ることによって行いました。

    この機能は、実行のために必要な問題より多くの時間のかかるタスクを解決します。唯一のサービス、オープン複数のスレッドが時間のかかる操作を実行する場合、管理が困難です。

    たとえば、アプリの前に行う際に、一定期間の需要は、ダウンロードが完了した後、ダウンロードユーザーの画像がImageViewの表示保存されている。多くのがある画像をダウンロードするための一般的な必要性は、次の画像のそれぞれは、直ちに表示をダウンロードした後、スレッドですユーザーエクスペリエンスが優れているのでアウトなので、間違いなく、順序に従ってダウンロードされ、ダウンロードしたいです。この関数も実現することができるが、なく高効率、偶数ANRは、(特定のコードロジックが可能であり、アプローチは、欠陥ダウンロードに直接開いて、複数のスレッドであった前方の画像は、他のスレッドが待機しなければならない前に、ダウンロードが完了しましたスレッドがCPUの後ろに取得する場合は、しかし、絵の前で、待機を終了していない、いない、スレッドのバックがCPUを取得したが絵が、終了したと仮定する前に、)問題があります。

    このシナリオでは、IntentServiceを使用することは非常に容易である場合は、それぞれのかかるタスクがロジックやパフォーマンスを心配する必要はありません、順番に順次実行されて発生し、それは価値のIntentServiceです。


概要:Androidの多くのクラスは、このようなクラスの前に書かれたこの記事IntentServiceとhandlerThreadおよびその他のような特定の一般的なシナリオ用に設計されているが、通常、いくつかの困難な問題に遭遇したとき、後に解決されるために蓄積します。

公開された11元の記事 ウォンの賞賛2 ビュー10000 +

おすすめ

転載: blog.csdn.net/zhengyin_tmac/article/details/52446696