スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Tag:スポンサー広告 

【Android】AsyncTaskを使って画像の描画を非同期でやる

こんにちは、桜も咲いてすっかり春ですね。

前回までAndroidで画像のURLからBitmapを生成して、ImageViewに設定する方法を紹介してきましたが、今回はその処理をAsyncTaskを使って非同期にやる方法を紹介します。

前回までにやったURLからBitmapを生成する処理はImageUtil.getImageFromUrl( String url )で実装しているものとします。詳しくは前回のエントリーを参考にしてみてください。


public class ImageViewTask extends AsyncTask {
private ImageView imageView;
private String url;

public ImageViewTask(ImageView iv, String url){
imageView = iv;
this.url = url;
}

protected void onPreExecute() {
//ここでキャッシュを確認したりすれば余計なスレッドを食わなくてすむ
if( ImageUtil.hasCache(url)){
imageView.setImageBitmap(ImageUtil.getBitmapCache(url));
cancel(true);
}
}

protected Bitmap doInBackground(String... params){
url = params[0];
return ImageUtil.getBitmapFromURL(url);
}

protected void onPostExecute(Bitmap result){
imageView.setImageBitmap(result);
}
}


使うときは


ImageViewTask imageViewTask = new ImageViewTask(imageView, url);
imageViewTask.execute(url);


といった感じで使えば大丈夫です。
重要なポイントはonPreExecute()を実装して、キャッシュがあればスレッドを生成しないように処理して上げることです。スレッドを生成するのはそこそこのコストなので、回避する方法も用意しておくといいと思います。
スポンサーサイト
テーマ : プログラミング
ジャンル : コンピュータ

Tag:Android  Trackback:0 comment:0 

Comment

comment form
(編集・削除用):
管理者にだけ表示を許可
プロフィール

6rats

Author:6rats
こんにちは、ITベンチャーで働くエンジニアです
主に自分の周りで起きた技術的なことをメモとして書き残して行きます。
Android以外にもRuby/Ruby on RailsやFuelPHPなどなどたまにやります。基本的なスタンスとしては興味があるもしくは必要になったらいろんなことにチャレンジします。
最近はiOSアプリ開発を始めています。

購読
follow us in feedly
個人プロダクト

Androidアプリ

Twitterクライアント

Webアプリケーション

EcPriceWatch(Amazon価格の推移を計測、最安値を知らせるサービス)
Google AdSense
ブログ村
にほんブログ村 IT技術ブログへ
にほんブログ村
ブロとも申請フォーム

この人とブロともになる

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。