2012-01-09 12 views
2

私は複数のリストを別のものの中に埋め込んで使用しています。これは明らかにアプリケーションを遅くするので、私はマルチスレッドを使用すると思った。別々のリストをスレッドとして扱い、データを独立したスレッドとしてそれらの内部にロードして、より速くします。AsyncTaskとHandlersの違いは何ですか?Listviewでどちらを使うのが良いですか?

これを行うより良い方法ですか?私はそれに基づいていくつかの例がありますか?あるいはリンク?

答えて

7
  • ハンドラは、アプリケーションのメインスレッドに関連付けられています。バックグラウンドスレッドからアプリのメインスレッドに送信されたメッセージとランナブルを処理してスケジュールします。

  • AsyncTaskは、時間のかかる操作でUIを更新せずにUIを更新するための簡単な方法を提供します。

あなたがメインUI

0

あなたの質問のタイトルは問題の本文と一致しません。よりよく関連するように変更すると、より良い回答が得られます。

は違いの、について説明するために、次の質問を参照してください:AsyncTaskが最も理にかなっているように、 How to know when to use an async task or Handler言っ

は、あなたのケースでは、あなたは、メッセージの処理とは対照的に、リストボックスの人口をparralelizeたいです。

0

ハンドラとAsyncTasksを阻止いけないのでリストビューをロードするための非同期タスクを使用した方が良いですがUI /イベントスレッドとマルチスレッド実装する方法です。

ハンドラは任意のスレッドから作成でき、それを作成したスレッド上で実行されます。

それは、バックグラウンドからそれを作成したスレッドに送信されたメッセージと実行可能ファイルを処理し、スケジューリングします。 。 遅延メッセージを投稿するか、特定の順序でMessageQueueにメッセージを送信するハンドラを使用することを検討する必要があります。

AsyncTaskは、常にメインスレッドからトリガまたは作成されます。

メソッドonPreExecute()、onPostExecute()、onProgressUpdate()はメインスレッド(UIスレッド)で実行され、doInBackground()はワーカースレッド(またはバックグラウンドスレッド)で実行されます.AsyncTaskはUIスレッド。 このクラスを使用すると、バックグラウンド操作を実行し、UIスレッドで結果を公開できます。

アプリのメインスレッドとバックグラウンドスレッドの間でパラメータを交換(つまりUIを更新)したい場合は、AsyncTaskの使用を検討してください。

関連する問題