@Override public void fetchEnd(@NonNull DownloadTask task, int blockIndex, long contentLength) { final DownloadListener[] listeners = getThreadSafeArray(task, realListenerMap); if (listeners == null) return; for (final DownloadListener realOne : listeners) { if (realOne == null) continue; realOne.fetchEnd(task, blockIndex, contentLength); } }
@Override public void fetchEnd(@NonNull DownloadTask task, int blockIndex, long contentLength) { for (DownloadListener listener : listenerList) { listener.fetchEnd(task, blockIndex, contentLength); } }
@Override public void run() { task.getListener().fetchEnd(task, blockIndex, contentLength); } });
@Override public void fetchEnd(@NonNull final DownloadTask task, final int blockIndex, final long contentLength) { Util.d(TAG, "fetchEnd: " + task.getId()); if (task.isAutoCallbackToUIThread()) { uiHandler.post(new Runnable() { @Override public void run() { task.getListener().fetchEnd(task, blockIndex, contentLength); } }); } else { task.getListener().fetchEnd(task, blockIndex, contentLength); } }
void start() throws IOException { final CallbackDispatcher dispatcher = OkDownload.with().callbackDispatcher(); // connect chain final RetryInterceptor retryInterceptor = new RetryInterceptor(); final BreakpointInterceptor breakpointInterceptor = new BreakpointInterceptor(); connectInterceptorList.add(retryInterceptor); connectInterceptorList.add(breakpointInterceptor); connectInterceptorList.add(new HeaderInterceptor()); connectInterceptorList.add(new CallServerInterceptor()); connectIndex = 0; final DownloadConnection.Connected connected = processConnect(); if (cache.isInterrupt()) { throw InterruptException.SIGNAL; } dispatcher.dispatch().fetchStart(task, blockIndex, getResponseContentLength()); // fetch chain final FetchDataInterceptor fetchDataInterceptor = new FetchDataInterceptor(blockIndex, connected.getInputStream(), getOutputStream(), task); fetchInterceptorList.add(retryInterceptor); fetchInterceptorList.add(breakpointInterceptor); fetchInterceptorList.add(fetchDataInterceptor); fetchIndex = 0; final long totalFetchedBytes = processFetch(); dispatcher.dispatch().fetchEnd(task, blockIndex, totalFetchedBytes); }