Androidがネットワーク画像を非同期で取得し、メモリオーバーフローの問題を解決する方法
5590 ワード
テスト環境はAdnroid 2.1以上です.
1.AndroidManifest.xml権限の構成:
インターネットアクセスの追加:
2.非同期画像類ImageDownloadTask
3.テストコールコード:
4.まとめ:
主にextends AsyncTaskにより非同期化を実現した.
画像Out Of Memoryメモリオーバーフローという操作は,実際の応用では淡々と抽出することを考慮すべきである.ここは便宜上入れました.オーバーフロー処理は,実際にはデバイス解像度を取得して画像を圧縮する.
1.AndroidManifest.xml権限の構成:
インターネットアクセスの追加:
2.非同期画像類ImageDownloadTask
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.AsyncTask;
import android.widget.ImageView;
public class ImageDownloadTask extends AsyncTask
3.テストコールコード:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ImageDownloadTask imgtask =new ImageDownloadTask();
/** 。begin*/
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
imgtask.setDisplayWidth(dm.widthPixels);
imgtask.setDisplayHeight(dm.heightPixels);
//end
ImageView imageView_test= (ImageView)findViewById(R.id.imageView_test);
imgtask.execute("http://pic.qukantu.com/big/7515/201201031116491.jpg",imageView_test);
}
4.まとめ:
主にextends AsyncTaskにより非同期化を実現した.
画像Out Of Memoryメモリオーバーフローという操作は,実際の応用では淡々と抽出することを考慮すべきである.ここは便宜上入れました.オーバーフロー処理は,実際にはデバイス解像度を取得して画像を圧縮する.