我正在尝试从我的Android应用程序中的网上下载图像,它大部分时间都可以工作,但有些图片无法下载而且Bitmap为空。然而,图像的链接始终存在。是什么原因引起了这个?
private class GetImage extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... urls) {
int len = 500;
try {
URL url = new URL(urls[0]);
Log.v("url",urls[0]);
HttpURLConnection connection = (HttpURLConnection) url
.openConnection();
connection.setReadTimeout(10000);
connection.setConnectTimeout(15000);
connection.setRequestMethod("GET");
connection.setDoInput(true);
connection.connect();
int response = connection.getResponseCode();
inputstream = connection.getInputStream();
System.out.println(inputstream.toString());
bitmap = BitmapFactory.decodeStream(inputstream);
if(bitmap==null)
Log.v("Bitmap","fail");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
if (inputstream != null) {
try {
inputstream.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
return "some string since it bitmap is sometimes null";
答案 0 :(得分:0)
您无法始终依赖网络。您可以使用像okhttp或者齐射的http库来轻松地重试(或者您可以自己重试)。这些库做了很多事情来平滑使用原始HttpUrlConnection的http体验。
根据图像的重要程度,如果图像失败,您可以随时将图像隐藏在onPostExecute中。