18

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

たとえば、Androidアプリからサーバーにメッセージを送信したいとします。そして、私はこのプロセスが敏感になることを望んでいます。何を使うべきですか?

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

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

4

6 に答える 6

32

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

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 
于 2013-10-05T12:44:31.897 に答える
21

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

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

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

詳細については、Androidサービス、スレッド、IntentService、AsyncTaskの違いをご覧ください。

一般に

スレッド

  • 一般的に長いタスク。

  • 並行して使用するタスクの場合複数のスレッド(従来のメカニズム)

AsyncTask

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

  • 並列タスクの場合は、複数のインスタンスまたはエグゼキューターを使用します

于 2013-02-08T20:33:29.507 に答える
4

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

于 2012-08-01T11:58:05.170 に答える
4

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

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

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

于 2012-08-01T11:59:58.527 に答える
4
  • 非同期タスクを使用すると、開始時と終了時、およびいつ 応答できるかが background process通知されるため、使用したいと思います。parse
  • Asyncには、のようなメソッドがonPreExecuteありonPostExecute、バックグラウンドタスクを呼び出す前後にタスクを実行できます。
于 2012-08-01T12:00:58.447 に答える
3

AsyncTask enables proper and easy use of the UI thread.-開発者から。

つまり、AsyncTaskは特別な種類のスレッドです。これはGUIスレッドであり、バックグラウンドで動作し、GUIを使用して何かを実行できます。基本的には関数を使用して「事前にプログラム」されていますonPreExecute(), do inBackground(), onPostExecute()

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

于 2012-08-01T12:01:23.203 に答える