В настоящее время я загружаю изображения с URL-адреса, и он уходит в длину, и я не могу понять, почему, иногда занимает больше 60 секунд, чтобы получить изображения, которые на самом деле не являются это большой.Изображение Android занимает много времени, чтобы получить от URL
Мой код:
Получить изображение асинхронная задача:
public class GetImageAsyncTask extends AsyncTask<Void, Void, Bitmap> {
String url;
OnImageRetrieved listener;
ImageView imageView;
int height;
int width;
public GetImageAsyncTask(String url, ImageView imageView,OnImageRetrieved listener, int height, int width) {
this.url = url;
this.listener = listener;
this.imageView = imageView;
this.height = height;
this.width = width;
}
public interface OnImageRetrieved {
void onImageRetrieved(Bitmap image, ImageView imageview, String url);
}
protected Bitmap doInBackground(Void... params) {
Bitmap image = null;
try {
image = ImageUtilities.decodeSampledBitmapFromUrl(this.url, this.width, this.height);
} catch (Exception e) {
e.printStackTrace();
}
return image;
}
protected void onPostExecute(Bitmap result) {
this.listener.onImageRetrieved(result, this.imageView, this.url);
}
}
public static Bitmap decodeSampledBitmapFromUrl(String url, int reqWidth, int reqHeight) throws IOException {
final BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
BitmapFactory.decodeStream(new java.net.URL(url).openStream(), null, options);
options.inSampleSize = calculateInSampleSize(options, reqWidth, reqHeight);
options.inJustDecodeBounds = false;
return BitmapFactory.decodeStream(new java.net.URL(url).openStream(), null, options);
}
Получение Размер выборки:
public static int calculateInSampleSize(BitmapFactory.Options options, int reqWidth, int reqHeight) {
final int height = options.outHeight;
final int width = options.outWidth;
int inSampleSize = 1;
if (height > reqHeight || width > reqWidth) {
final int halfHeight = height/2;
final int halfWidth = width/2;
while ((halfHeight/inSampleSize) > reqHeight
&& (halfWidth/inSampleSize) > reqWidth) {
inSampleSize *= 2;
}
}
return inSampleSize;
}
Эти методы используются из-за осложнений памяти, которые могут возникнуть, если нет, но время, которое, по-видимому, занимает всего лишь долгое время. Есть ли какие-то очень тяжелые вычисления, которые я просто не вижу или?
так насколько велики они на стороне сервера? что такое значение 'options.outHeight' и' options.outWidth'? – pskink
Изображения на s3 варьируются от 300 до 1100 КБ, поэтому я имею в виду не совсем массивный. Ширина может быть где-нибудь между 500-2000, высота 400- 1200. Подумайте ив попадались еще один вопрос, мой адаптер GetView становится называется способом много раз, которое приводит к буквально 100-х звонков на мой getIMageAsyncTask –