@Override public void fetchProgress(@NonNull DownloadTask task, int blockIndex, long increaseBytes) { for (DownloadListener listener : listenerList) { listener.fetchProgress(task, blockIndex, increaseBytes); } }
@Override public void fetchProgress(@NonNull DownloadTask task, int blockIndex, long increaseBytes) { final DownloadListener[] listeners = getThreadSafeArray(task, realListenerMap); if (listeners == null) return; for (final DownloadListener realOne : listeners) { if (realOne == null) continue; realOne.fetchProgress(task, blockIndex, increaseBytes); } }
public void flushNoCallbackIncreaseBytes() { if (noCallbackIncreaseBytes == 0) return; callbackDispatcher.dispatch().fetchProgress(task, blockIndex, noCallbackIncreaseBytes); noCallbackIncreaseBytes = 0; }
@Override public void run() { task.getListener().fetchProgress(task, blockIndex, increaseBytes); } });
@Override public void fetchProgress(@NonNull final DownloadTask task, final int blockIndex, final long increaseBytes) { if (task.getMinIntervalMillisCallbackProcess() > 0) { DownloadTask.TaskHideWrapper .setLastCallbackProcessTs(task, SystemClock.uptimeMillis()); } if (task.isAutoCallbackToUIThread()) { uiHandler.post(new Runnable() { @Override public void run() { task.getListener().fetchProgress(task, blockIndex, increaseBytes); } }); } else { task.getListener().fetchProgress(task, blockIndex, increaseBytes); } }
@Test public void fetchProgress() throws Exception { listenerBunch.fetchProgress(task, 1, 1L); verify(listener1).fetchProgress(eq(task), eq(1), eq(1L)); verify(listener2).fetchProgress(eq(task), eq(1), eq(1L)); }
verify(listener).fetchStart(eq(task), eq(1), eq(2L)); dispatcher.dispatch().fetchProgress(task, 1, 2L); verify(listener).fetchProgress(eq(task), eq(1), eq(2L));
verify(listener2).fetchStart(eq(task), eq(1), eq(2L)); listener.fetchProgress(task, 1, 2L); listener.fetchProgress(noAttachTask, 1, 2L); verify(listener1).fetchProgress(eq(task), eq(1), eq(2L)); verify(listener2).fetchProgress(eq(task), eq(1), eq(2L));
@Test public void fetchProgress_setMinInterval() { final DownloadTask task = spy(new DownloadTask .Builder("https://jacksgong.com", "parentPath", "filename") .setMinIntervalMillisCallbackProcess(1) .build()); final DownloadListener listener = mock(DownloadListener.class); when(task.getListener()).thenReturn(listener); dispatcher.dispatch().fetchProgress(task, 1, 2); assertThat(DownloadTask.TaskHideWrapper.getLastCallbackProcessTs(task)).isNotZero(); } }
verify(listener).fetchStart(eq(task), eq(1), eq(2L)); dispatcher.dispatch().fetchProgress(task, 1, 2L); verify(listener).fetchProgress(eq(task), eq(1), eq(2L));
@Test public void flushNoCallbackIncreaseBytes() { chain.increaseCallbackBytes(10L); chain.increaseCallbackBytes(6L); assertThat(chain.noCallbackIncreaseBytes).isEqualTo(16L); chain.flushNoCallbackIncreaseBytes(); verify(OkDownload.with().callbackDispatcher().dispatch()) .fetchProgress(eq(chain.getTask()), eq(0), eq(16L)); assertThat(chain.noCallbackIncreaseBytes).isZero(); }