web-dev-qa-db-ja.com

AsyncTaskとThreadの本当の違い

私はこの問題についてAndroidドキュメント( AsyncTaskThread )および vogellaチュートリアル を読んでいますが、私はまだ疑問があります。

たとえば、Androidアプリからサーバーにメッセージを送信したいのですが、このプロセスを応答させたいのですが、何を使用すればよいですか?

UIをブロックしないために新しいThreadを作成する例を見てきましたが、この方法ではプロセスの進行状況がわかりません。また、Thread内で応答を処理する必要があります。 run()メソッドは何も返しません。

AsyncTaskThreadよりも優れたオプションのようですが、AsyncTaskの代わりにThreadを使用した場合の結果はわかりません。

16
Fran b

このブログを読んでください

http://crazyaboutandroid.blogspot.in/2011/12/difference-between-Android.html

詳細は次のとおりです。

Android Service、Thread、IntentServiceとAsyncTaskの違い

いつ使用するか?

サービス

   Task with no UI, but shouldn't be too long. Use threads within service for long tasks.

スレッド

- Long task in general.

- For tasks in parallel use Multiple threads (traditional mechanisms)

AsyncTask

- Small task having to communicate with main thread.

- For tasks in parallel use multiple instances OR Executor 
29
Dwivedi Ji

ここでの他のすべての答えは完全ではありません。AsyncTaskとThreadの間には大きな違いがあります。

スレッドは、任意のスレッド、main(UI)、またはバックグラウンドからトリガーできます。ただし、AsyncTaskはメインスレッドからトリガーする必要があります。

また、Androidの下位API(不明、APIレベル<11)では、AsyncTaskの1つのインスタンスを1回だけ実行できます。

詳細については、 Android Service、Thread、IntentService、AsyncTask の違い)をお読みください。

一般に

スレッド

  • 一般的に長いタスク。

  • 並列タスクの場合、複数のスレッドを使用します(従来のメカニズム)

AsyncTask

  • メインスレッドと通信する必要がある小さなタスク。

  • 並列タスクの場合、複数のインスタンスを使用しますOR Executor

20
Shirish Herwade

一般に2を使用すると、この機能は同等ですが、AsyncTaskはGUIとの統合という点でより単純です。

4

AsyncTaskは、UIスレッドの適切で簡単な使用を可能にします。このクラスを使用すると、スレッドやハンドラーを操作しなくても、バックグラウンド操作を実行してUIスレッドで結果を公開できます。

あなたはそれ自身の機能を制御することができます

doInBackground(Params ... params)、onCancelled()、onPostExecute(Result result)、onPreExecute()、nProgressUpdate(Progress ... values)、publishProgress(Progress ... values)

4
  • Async Taskを使用したいのですが、background process get started and overそしていつ応答をparseできますか。
  • Asyncには、onPreExecuteonPostExecuteのようなメソッドがあり、バックグラウンドタスクを呼び出す前後にタスクを実行できます。
4

_AsyncTask enables proper and easy use of the UI thread._ --from 開発者

重要なのは-AsyncTaskは特別な種類のスレッドです-GUIスレッドであり、バックグラウンドで動作し、GUIで何かを実行できます-基本的に関数onPreExecute(), do inBackground(), onPostExecute()

Threadをそのように機能させるには、大量のコードを作成する必要があります。

3
Michal