0

私はこれを解決しようとしていますが、現在、詳細ページアクティビティがあります (ListView から選択された項目に応じて DB から動的にロードされます)。各詳細ページには、オンライン サーバーからダウンロードされた 1 ~ 5 個の画像を含めることができます。私が抱えている問題は、写真がダウンロードされるまでアクティビティが表示されないことです。

基本的に、アクティビティは onCreate が終了するまで表示されません。UI がフリーズしないように、スレッドを使用して画像をダウンロードしています。私の質問は、ImageView をダウンロードしてダウンロードしたビットマップに設定し、ユーザーがリスト項目をクリックした後にすぐにアクティビティと情報を確認できるようにすることです。ダウンロードした後、画像をダウンロードして設定しますか?

onResume にスレッドを入れてみましたが、どちらも役に立たないと思います。最善の方法は何ですか?

よろしく、

ジョージ

4

2 に答える 2

1

AsyncTaskを実装する必要があります。これはバックグラウンド スレッドで実行され、メイン スレッドのブロックを防ぎます。以下のように AsyncTask を拡張するクラスを作成するだけです

編集- はい、これにより、画像がダウンロードされる前でもアクティビティが表示されます。onCreate() で AsyncTask の execute() メソッドを呼び出すだけです。完全な概要については、上記の AsyncTasks のページをご覧ください。AsyncTask が完了していない場合に構成の変更を認識するだけで、実装は非常に簡単です。

ビットマップが不必要に再度ダウンロードされるのを防ぐために、ビットマップをメモリにキャッシュすることを検討することもできます。

public class DownloadItemDetails extends AsyncTask<String, Void, ArrayList<Bitmap>{

protected ArrayList<Bitmap> doInBackground(String...params){

 //Download each Bitmap here, and add them to a list to be displayed later


}

protected void onPostExecute(ArrayList<Bitmap> results){

  //This method executes on the main thread, so after your downloads finish
  //You can set your imageviews in your Details Page here


}

}

于 2013-07-07T23:06:33.147 に答える
0

ユーザーを喜ばせたいというあなたの好奇心によると、Github のAndroid Universal Image Loaderライブラリを使用する必要があると思います。このライブラリは、非同期の画像の読み込み、キャッシュ、および表示を提供します。

Github のShutterBug - Remote Image Loaderも同じように使用できます。また、リモート イメージを取得してキャッシュします。リスト、グリッド、およびマップでリモート画像を表示するのに特に適しています。

于 2013-07-07T23:14:18.800 に答える