Android-下载图像偶尔会失败。

时间:2015-01-04 12:18:41

标签: android android-activity android-asynctask

我正在尝试从我的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";

1 个答案:

答案 0 :(得分:0)

您无法始终依赖网络。您可以使用像okhttp或者齐射的http库来轻松地重试(或者您可以自己重试)。这些库做了很多事情来平滑使用原始HttpUrlConnection的http体验。

根据图像的重要程度,如果图像失败,您可以随时将图像隐藏在onPostExecute中。