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) {

我正在尝试在我的android应用程序中从网上下载图像,大多数情况下都能正常工作,但有些图片无法下载,位图为空。然而,图像的链接始终存在。你知道这是什么原因吗

     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,图片会正确显示吗?