public class ProgressRequestBody extends RequestBody {
    private File mFile;
    private String mPath;
    private UploadCallbacks mListener;
    private static final int DEFAULT_BUFFER_SIZE = 2048;
    public interface UploadCallbacks {
        void onProgressUpdate(int percentage);
        void onError();
        void onFinish();
    }
    public ProgressRequestBody(File file,UploadCallbacks listener) {
        mFile = file;
        mListener = listener;
    }
    @Override
    public MediaType contentType() {
        // i want to upload only images
        return MediaType.parse("image/*");
    }
    @Override
    public long contentLength() throws IOException {
        return mFile.length();
    }
    @Override
    public void writeTo(BufferedSink sink) throws IOException {
        Source source = null;
        try {
            source = Okio.source(mFile);
            long total = 0;
            long read;
            while ((read = source.read(sink.buffer(), DEFAULT_BUFFER_SIZE)) != -1) {
                total += read;
                sink.flush();
                mListener.onProgressUpdate((int)(100 * total / mFile.length()));
            }
        } finally {
            Util.closeQuietly(source);
        }
    }
In the above code progress bar appears twice when we upload a single file. Means internally writing the file first and uploading happening second time. So it's showing two progress bars. How can we avoid that first progress bar shows?
 
    