Я работаю над приложением, которое загружает изображения с URL. Проблема в том, что только некоторые изображения загружаются правильно, а другие - нет.
Прежде всего, вот код проблемы:
public Bitmap downloadImage(String url) {
HttpClient client = new DefaultHttpClient();
HttpResponse response = null;
try {
response = client.execute(new HttpGet(url));
} catch (ClientProtocolException cpe) {
Log.i(LOG_FILE, "client protocol exception");
return null;
} catch (IOException ioe) {
Log.i(LOG_FILE, "IOE downloading image");
return null;
} catch (Exception e) {
Log.i(LOG_FILE, "Other exception downloading image");
return null;
}
// Convert images from stream to bitmap object
try {
Bitmap image = BitmapFactory.decodeStream(response.getEntity().getContent());
if(image==null)
Log.i(LOG_FILE, "image conversion failed");
return image;
} catch (Exception e) {
Log.i(LOG_FILE, "Other exception while converting image");
return null;
}
}
Итак, у меня есть метод, который принимает URL в качестве строкового аргумента, а затем загружает изображение, преобразует поток HttpResponse в растровое изображение с помощью метода BitmapFactory.decodeStream и возвращает его. Проблема в том, что, когда я нахожусь в медленном сетевом соединении (почти всегда 3G, а не Wi-Fi), некоторые изображения преобразуются в ноль - не все, только некоторые. Использование соединения Wi-Fi работает отлично; все изображения загружены и преобразованы должным образом.
Кто-нибудь знает, почему это происходит? Или лучше, как я могу это исправить? Как бы я даже пошел на тестирование, чтобы определить проблему? Любая помощь потрясающая; спасибо!