Android 安卓系统——下载图像有时会失败。
我正在尝试在我的android应用程序中从网上下载图像,大多数情况下都能正常工作,但有些图片无法下载,位图为空。然而,图像的链接始终存在。你知道这是什么原因吗Android 安卓系统——下载图像有时会失败。,android,android-activity,android-asynctask,Android,Android Activity,Android Asynctask,我正在尝试在我的android应用程序中从网上下载图像,大多数情况下都能正常工作,但有些图片无法下载,位图为空。然而,图像的链接始终存在。你知道这是什么原因吗 private class GetImage extends AsyncTask<String, Void, String> { @Override protected String doInBackground(String... urls) {
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";
私有类GetImage扩展异步任务{
@凌驾
受保护的字符串doInBackground(字符串…URL){
int len=500;
试一试{
URL=新URL(URL[0]);
Log.v(“url”,url[0]);
HttpURLConnection连接=(HttpURLConnection)url
.openConnection();
connection.setReadTimeout(10000);
连接。设置连接超时(15000);
connection.setRequestMethod(“GET”);
connection.setDoInput(true);
connection.connect();
int response=connection.getResponseCode();
inputstream=connection.getInputStream();
System.out.println(inputstream.toString());
位图=BitmapFactory.decodeStream(inputstream);
如果(位图==null)
Log.v(“位图”、“失败”);
}捕获(IOE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}最后{
如果(inputstream!=null){
试一试{
inputstream.close();
}捕获(IOE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
}
}
返回“某些字符串,因为它有时为空”;
你不能总是依赖网络。你可以使用像okhttp或volley这样的http库,它可以让你轻松地重试(或者你可以自己重试)。这些库可以通过使用原始HttpUrlConnection来平滑http体验
根据映像的关键程度,如果映像失败,您可以始终将其隐藏在onPostExecute中。不,每次都是相同的映像,如果我更改映像,它工作正常。而且我现在无法重试其他库,最后期限已近。虽然它与所有其他库一样是JPG,但您在尝试下载这些映像时是否会遇到特殊异常电子图片?一点也不。我觉得这很奇怪。如果你从浏览器转到url,图片会正确显示吗?