Вам лучше вернуть растровое изображение из doInBackground
и взять его из параметра в onPostExecute()
class DownloadImageTask extends AsyncTask<String, Integer, Bitmap> {
@Override
protected Bitmap doInBackground(String... url) {
Bitmap bitmap = DownloadImage(url[0]);
return bitmap ;
}
@Override
protected void onProgressUpdate(Integer... args) {
mProgressDialog.setProgress(args[0]);
}
@Override
protected void onPostExecute(Bitmap bmp) {
ImageView img = (ImageView) findViewById(R.id.img);
img.setImageBitmap(bmp);
img.setVisibility(View.INVISIBLE);
imgInfo = "Height: " + bitmap.getWidth() + " px" + "\n" + "Width: "
+ bitmap.getHeight() + " px" + "\n" + "File Size: "
+ fileSize / 1024 + " KB" + "\n" + "Image Name: "
+ getString(R.string.img_name);
isDownloaded = true;
mProgressDialog.dismiss();
}
**
РЕДАКТИРОВАТЬ:
**
Как только inputtream достигает своего конца, вы больше не можете читать данные с него. Вместо этого вы должны записать InputStream
в byte array
и затем преобразовать байтовый массив в растровое изображение.
private Bitmap OpenHttpConnection(String urlString)
throws IOException {
........
........
byte data[] = new byte[1024];
long total = 0;
int count = 0;
ByteArrayOutputStream bos = new ByteArrayOutputStream();
while ((count = in.read(data)) != -1) {
total += count;
bos.write(data, 0, count);
publishProgress((int)(total*100/fileSize));
}
return BitmapFactory.decodeByteArray(bos.toByteArray(),0,bos.size());
}