私はこの問題についてAndroidドキュメント( AsyncTask 、 Thread )および vogellaチュートリアル を読んでいますが、私はまだ疑問があります。
たとえば、Androidアプリからサーバーにメッセージを送信したいのですが、このプロセスを応答させたいのですが、何を使用すればよいですか?
UIをブロックしないために新しいThread
を作成する例を見てきましたが、この方法ではプロセスの進行状況がわかりません。また、Thread
内で応答を処理する必要があります。 run()
メソッドは何も返しません。
AsyncTask
はThread
よりも優れたオプションのようですが、AsyncTask
の代わりにThread
を使用した場合の結果はわかりません。
このブログを読んでください
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
ここでの他のすべての答えは完全ではありません。AsyncTaskとThreadの間には大きな違いがあります。
スレッドは、任意のスレッド、main(UI)、またはバックグラウンドからトリガーできます。ただし、AsyncTaskはメインスレッドからトリガーする必要があります。
また、Androidの下位API(不明、APIレベル<11)では、AsyncTaskの1つのインスタンスを1回だけ実行できます。
詳細については、 Android Service、Thread、IntentService、AsyncTask の違い)をお読みください。
一般に
スレッド
一般的に長いタスク。
並列タスクの場合、複数のスレッドを使用します(従来のメカニズム)
AsyncTask
メインスレッドと通信する必要がある小さなタスク。
並列タスクの場合、複数のインスタンスを使用しますOR Executor
一般に2を使用すると、この機能は同等ですが、AsyncTaskはGUIとの統合という点でより単純です。
AsyncTaskは、UIスレッドの適切で簡単な使用を可能にします。このクラスを使用すると、スレッドやハンドラーを操作しなくても、バックグラウンド操作を実行してUIスレッドで結果を公開できます。
あなたはそれ自身の機能を制御することができます
doInBackground(Params ... params)、onCancelled()、onPostExecute(Result result)、onPreExecute()、nProgressUpdate(Progress ... values)、publishProgress(Progress ... values)
background process
get started and overそしていつ応答をparse
できますか。onPreExecute
やonPostExecute
のようなメソッドがあり、バックグラウンドタスクを呼び出す前後にタスクを実行できます。_AsyncTask enables proper and easy use of the UI thread.
_ --from 開発者 。
重要なのは-AsyncTaskは特別な種類のスレッドです-GUIスレッドであり、バックグラウンドで動作し、GUIで何かを実行できます-基本的に関数onPreExecute(), do inBackground(), onPostExecute()
。
Thread
をそのように機能させるには、大量のコードを作成する必要があります。