Есть ли способ получить прогресс загрузки правильно с HttpUrlConncetion

Блог разработчиков Android рекомендую использоватьHttpURLConnection кроме апачаHttpClient (http://android-developers.blogspot.com/2011/09/androids-http-clients.html). Я прислушиваюсь к советам и получаю проблемы в отчете о ходе загрузки файла.

мой код для захвата прогресса выглядит так:

try {
    out = conncetion.getOutputStream();
    in = new BufferedInputStream(fin);
    byte[] buffer = new byte[MAX_BUFFER_SIZE];
    int r;
    while ((r = in.read(buffer)) != -1) {
        out.write(buffer, 0, r);
        bytes += r;
        if (null != mListener) {
            long now = System.currentTimeMillis();
            if (now - lastTime >= mListener.getProgressInterval()) {
                lastTime = now;
                if (!mListener.onProgress(bytes, mSize)) {
                    break;
                }
            }
        }
    }
    out.flush();
} finally {
    closeSilently(in);
    closeSilently(out);
}

этот код очень быстро выполняет любой размер файла, но файл все еще загружается на сервер, когда я получаю ответ от сервера. Кажется, чтоHttpURLConnection кэширует все данные во внутреннем буфере, когда я звонюout.write().

Итак, как я могу получить фактический прогресс загрузки файла? Похоже наhttpclient могу сделать это, ноhttpclient не предпочтительнее ... есть идеи?

Ответы на вопрос(2)

Ваш ответ на вопрос