如何一张一张下载所有图片并显示进度状态

How to download all images one by one and show progress status

我想一个一个地下载服务器上 Url 数组字符串中的所有图像,这样我就不必从服务器下载图像的 zip 文件并在之后解压缩下载它。

所以我想到一张一张下载图片,并在进度条中显示下载状态。但我在这方面非常失败。我想到了制作 Url 的字符串数组并使用 For 循环下载但它正在下载字符串数组的最后一张图像并拒绝或传递数组中的所有其他图像。我想我知道发生了什么,但我知道那时的解决方案是什么。

到目前为止我做了什么

protected Void doInBackground(Void... arg0) {
        try {
            //set the download URL, a url that points to a file on the internet
            //this is the file to be downloaded
            String [] imageUrl = {"http://www.androidbegin.com/tutorial/flag/india.png","http://www.androidbegin.com/tutorial/flag/pakistan.png"
                    ,"http://www.androidbegin.com/tutorial/flag/china.png","http://www.androidbegin.com/tutorial/flag/unitedstates.png"};
            URL url;
            HttpURLConnection urlConnection = null;
            for(int i=0;i<imageUrl.length;i++){
                 url = new URL(imageUrl[i]);

                //create the new connection
                urlConnection = (HttpURLConnection) url.openConnection();

                //set up some things on the connection
                urlConnection.setRequestMethod("GET");
                urlConnection.setDoOutput(true);

                //and connect!
                urlConnection.connect();

            }
            File storagePath = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + "Test");
            storagePath.mkdirs();
            String finalName = Long.toString(System.currentTimeMillis());
            File myImage = new File(storagePath, finalName + ".png");


            //this will be used to write the downloaded data into the file we created
            FileOutputStream fileOutput = new FileOutputStream(myImage);

            //this will be used in reading the data from the internet
            InputStream inputStream = urlConnection.getInputStream();

            //this is the total size of the file
            int totalSize = urlConnection.getContentLength();
            //variable to store total downloaded bytes
            int downloadedSize = 0;

            //create a buffer...
            byte[] buffer = new byte[1024];
            int bufferLength = 0; //used to store a temporary size of the buffer

            //now, read through the input buffer and write the contents to the file
            while ((bufferLength = inputStream.read(buffer)) > 0) {
                //add the data in the buffer to the file in the file output stream (the file on the sd card
                fileOutput.write(buffer, 0, bufferLength);
                //add up the size so we know how much is downloaded
                downloadedSize += bufferLength;
                //this is where you would do something to report the prgress, like this maybe
               // updateProgress(downloadedSize, totalSize);

            }
            //close the output stream when done
            fileOutput.close();

            //catch some possible errors...
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        // see http://androidsnippets.com/download-an-http-file-to-sdcard-with-progress-notification
        return null;
    }

** 我想要什么:**

  1. Download all the images one by one.
  2. After downloading one Image it should get save in the device and update the progress status.

请向我展示一些源代码,而不要只是告诉我如何做。并且很少有源代码和完整的解决方法将不胜感激。

saving image code 应该在for 循环 中使用。因为这段代码在 for 循环之外,只有你的最后一张图片被保存在 for 循环结束时最后 url 被使用。