@@ -310,11 +310,12 @@ protected void onRun()
310310
311311 if (Flag .CONTINUE .equals (getFlag ())) {
312312 InputStream inputStream = getSocket ().getInputStream ();
313- onOrientatingStreams (this , inputStream , getOutputStream ());
314-
315313 int len = 0 ;
316314 long lastRead = System .currentTimeMillis ();
317315
316+ onOrientatingStreams (this , inputStream , getOutputStream ());
317+ getTransferProgress ().resetCurrentTransferredByte ();
318+
318319 while (len != -1 ) {
319320 synchronized (getBlockingObject ()) {
320321 if ((len = inputStream .read (getBuffer ())) > 0 ) {
@@ -456,11 +457,10 @@ protected void onRun()
456457
457458 if (Flag .CONTINUE .equals (getFlag ())) {
458459 OutputStream outputStream = getSocket ().getOutputStream ();
459-
460- onOrientatingStreams (this , getInputStream (), outputStream );
461-
462460 int len = 0 ;
463461
462+ onOrientatingStreams (this , getInputStream (), outputStream );
463+ getTransferProgress ().resetCurrentTransferredByte ();
464464 getTransferProgress ().incrementTransferredByte (getSkippedBytes ());
465465
466466 while (len != -1 ) {
@@ -532,6 +532,7 @@ public void skipBytes(long bytes) throws IOException
532532 public static class TransferProgress <T >
533533 {
534534 private long mStartTime = System .currentTimeMillis ();
535+ private long mCurrentTransferredByte ;
535536 private long mTransferredByte ;
536537 private long mTotalByte ;
537538 private long mTimeElapsed ;
@@ -548,6 +549,7 @@ public int calculatePercentage(long max, long current)
548549
549550 public long decrementTransferredByte (long size )
550551 {
552+ mCurrentTransferredByte -= size ;
551553 mTransferredByte -= size ;
552554 return mTransferredByte ;
553555 }
@@ -621,6 +623,7 @@ public long getTransferredByte()
621623
622624 public long incrementTransferredByte (long size )
623625 {
626+ mCurrentTransferredByte += size ;
624627 mTransferredByte += size ;
625628 return mTransferredByte ;
626629 }
@@ -641,6 +644,10 @@ public boolean isInterrupted()
641644 return mInterrupted ;
642645 }
643646
647+ public void resetCurrentTransferredByte () {
648+ mCurrentTransferredByte = 0 ;
649+ }
650+
644651 public void setTotalByte (long totalByte )
645652 {
646653 mTotalByte = totalByte ;
0 commit comments