2011-08-08 19 views
2

私のアプリケーションで、インストールされているすべてのアプリケーションをユーザーデバイスに表示するビューのリストを作成しています。名前とアイコンが表示されます。リストビューは読み込みに非常に時間がかかり、読み込み中はUIが応答しません。怠惰な負荷と非同期のタスクチュートリアルがあるリソースを見てきましたが、それらはすべてインターネットから画像を取得するようです。私は、システムにあるイメージを読み込むのを怠る必要があります(アプリケーションのアイコンです)。私は非同期タスクでこれを行う方法も知らない。誰かが怠惰な負荷やasy​​nctaskアプリケーションのアイコンを助けてもらえますか?これは私のアプリケーションの非常に重要な部分であり、深く感謝します。ありがとう。リストビューで遅延ロードまたは非同期タスクを使用する方法

答えて

3

私は通常、表示しようとする明確な試行/コードがない場合はアドバイスを提供しませんが、最初にAsyncTasksとスレッディングに直面したときと、それで、あなたは正しい道を歩み始めるでしょう。

AsyncTaskは、基本的に(サーバーから情報をロードしたり、ファイルを取得したりするなどの)処理に時間がかかることがあります。それには、hereという2つの方法がありますが、あなたのシナリオでは、doInBackgroundonPostExecuteのメソッドを使用するだけです。それぞれの場合、実際にはListViewの実際の画像とデータをdoInBackgroundに入れてから、ListViewを更新してそのデータをonPostExecuteに表示します。 hereの例を考えてみましょう。基本的に、doInBackgroundメソッドは、そこからのデータを処理するonPostExecuteメソッドにいくつかのデータ(この場合、ファイルやその他のもの(大量のデータがある場合は、配列やリストなど)を送信します。

何が起こっているのは、あなたのメインのUIスレッドに負担がかかりすぎて、プログラムがあなたのUIで断続的に画像の取得と読み込みを待つことです。 AsyncTaskは、すべての作業をワーカースレッドを分離するようにスローすることで、これを処理します。 Androidの主なアプリケーションスレッドでリソースが多すぎる(コードに実際のバグがない)ことを通知するため、プログラムが予期せず終了するなど、UIスレッドに過負荷がかかると問題が発生します。

画像データのレイジーロードについては、どのように動作するかは全く分かりませんが、thisは本当に役立つようです。

あなたにはある程度の方向性がありました。

+0

ありがとう、本当にありがとう! – user861040

+0

問題ありません。 :-) – Vinay

+0

@Vinayこんにちは質問... 私はリストを作成する必要がある場合、どのようにそれを行う必要がありますか?私は知っている人口はdoibackgrnd()で行う必要がありますが、その後、私は結果を(バックグラウンドから)戻す必要があります、全体のリストがpopulatedされた後、onPostExecute()とリストがロードされますリストビューを非同期的に とするか、結果を部分的に返すか(新しい項目がリストに追加され、リスト全体が生成されるのを待たずに即座にonpost()に送り、繰り返しを繰り返します)怠惰な負荷を自分で管理することで、 –

関連する問題