-1

Androidでリストビューを遅延ロードするためのこのチュートリアルに従っています。 http://www.coderzheaven.com/2012/09/23/simplest-lazy-loading-listview-android-data-populated-mysql-database-php/

しかし、問題は、リストが遅延して読み込まれているのに、画像が提供されているとおりに順次ダウンロードされることです。つまり、小さい画像はそのように最初にダウンロードされません。このチュートリアルで何が間違っていますか?

4

2 に答える 2

1

アプリがAPIレベル12以上をターゲットにしている(そして実行している)場合、あなたが説明していることは意図された動作である可能性があります。たとえば、APIレベル9でコードを実行した場合、アプリがそれをサポートしている場合、同じ動作が発生することがわかりますか?そうでない場合は、それが問題になる可能性があります。

APIレベル12以降、AsyncTask予期しないエラーや競合状態の可能性を減らすために、デフォルトで複数の同時実行が順次実行されます。executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR)ただし、ではなくでタスクを開始すると、タスクexecute()は並行して実行され、前のタスクが終了するのを待ちません。

さらに読みたい場合は、その背後にある理論的根拠を説明するDianneHackbornによる良い投稿があります。

于 2013-01-04T23:21:08.187 に答える
1

私が見る限り、チュートリアルに問題はありません。次のコードを使用して、getView() で Asyntask を開始します。

new DownloadImageTask().execute(pb_and_image); 

それが非同期にする鍵です。

結果として、(UI スレッド内にある) getView メソッドの実行時に画像を取得するコードを実行する代わりに、コストのかかる実行がAsyncTaskのバックグラウンド スレッドで実行され、その結果が非同期的に配信されます。各行の getView 呼び出しの順序は制御できないため、順序は保証されません。

于 2013-01-04T22:44:46.560 に答える