2016-07-19 12 views
1

これは、AsentServiceではなくAsyncTaskをサービスで使用する通常の方法です。または、別の方法でバックグラウンドスレッドを作成する方が良いでしょうか?サービスでのAsyncTaskの使用

答えて

4

はサービスに

AsyncTaskのポイントをAsyncTaskを使って通常の練習は、バックグラウンド作業が完了した後に、メインアプリケーションスレッド上でいくつかの作業を行うことができるようにされていることです。ほとんどの場合、サービスはメインのアプリケーションスレッドで作業する必要はほとんどありません。

別の方法でバックグラウンドスレッドを作成する方がよいでしょうか?

はい:は、AsyncTaskのまっすぐ交換として強力な候補になります。他の場合には、ある種のスレッドプールが理にかなっているかもしれません。

+1

誰かがダウンして、これを投票し、なぜわからないを使用してスレッドを作成します。彼は質問に直接的かつ正確に答えました。 AsyncTaskは、WORKであるのに対して、ベストプラクティスではありません。あなた自身のスレッドを使ってバックグラウンド作業を行います。おそらく実行する必要のあるシリアル・タスクがたくさんある場合、HandlerThread + Handlerの独自の実装でも作業をきれいに処理できます。 –

+0

これは正確な答えです。投票に値するわけではありません。 – ucsunil

+1

もう1つのポイントは、サービスを使用する意図が長時間実行されるアクション(バックグラウンドで音楽をストリーミングしているとします。大きなデータをダウンロードしています。大きなデータをアップロードしているとします) 。 AsyncTaskを使用するのは、短命の操作であり、重量も長時間もありません。 –

1

いいえ、AsyncTaskは、UIスレッドから離れたバックグラウンドスレッドで短命の作業を実行するように設計されています。 UIスレッドが完了すると、UIスレッドを変更できるコールバックがあります。

あなたがサービス中に別のスレッドが必要な場合は、new Thread()

関連する問題