1. ホーム
  2. android

[解決済み] アンドロイド AsyncTaskとServiceの比較

2022-05-31 02:15:56

質問

なぜ私はここのほとんどの質問に対する答えの中で AsyncTask とローダーについては書かれていますが サービス ? Services はあまり知られていないだけなのか、それとも非推奨なのか、それとも何か悪い属性を持っているのか?どのような違いがあるのでしょうか?

(ところで、それについて他のスレッドがあることは知っていますが、開発者が実際の問題に対してどちらを使うのが良いかを簡単に決定できるような明確な違いを述べているものはありません)。

どのように解決するのですか?

場合によっては、同じタスクを AsyncTask または Service の2種類がありますが、通常はどちらか一方がより適しています。

AsyncTask は、UIスレッドから実行できない、一回限りの時間のかかるタスクのために設計されています。一般的な例としては、ボタンが押されたときにデータを取得/処理することです。

Service はバックグラウンドで継続的に実行されるように設計されています。上記のボタンが押されたときにデータを取得する例では、サービスを起動してデータを取得させ、その後停止させることができますが、これは非効率的です。これは非効率的です。 AsyncTask を使用する方がはるかに高速です。

しかし、バックグラウンドで継続的に何かをする必要がある場合には Service が最適です。この例としては、音楽を再生する、新しいデータを継続的にチェックする、などがあります。

また、Sherifがすでに述べたように、サービスは必ずしもUIスレッドから実行されるわけではありません。

ほとんどの場合 Service は、アプリケーションの Activity が開かれていないときでもコードを実行したいときに使います。 AsyncTask は、UI スレッドからコードを実行するのを信じられないほど簡単にするために設計されています。