package com.dl7.downloaderlib.helper; import com.dl7.downloaderlib.DownloadListener; import com.dl7.downloaderlib.entity.FileInfo; import com.dl7.downloaderlib.model.DownloadStatus; import com.dl7.downloaderlib.service.DownloadThreadPool; /** * Created by long on 2016/5/26. * 封装下载监听器 */ public final class ListenerDecorator implements DownloadListener { private final DownloadListener mListener; private final boolean mIsUiThread; public ListenerDecorator(DownloadListener listener, boolean isUiThread) { this.mListener = listener; this.mIsUiThread = isUiThread; } @Override public void onStart(final FileInfo fileInfo) { fileInfo.setStatus(DownloadStatus.START); // if (mIsUiThread) { // MainHandler.runInMainThread(new Runnable() { // @Override // public void run() { // mListener.onStart(fileInfo); // } // }); // } else { mListener.onStart(fileInfo); // } } @Override public void onUpdate(final FileInfo fileInfo) { fileInfo.setStatus(DownloadStatus.DOWNLOADING); // if (mIsUiThread) { // MainHandler.runInMainThread(new Runnable() { // @Override // public void run() { // mListener.onUpdate(fileInfo); // } // }); // } else { mListener.onUpdate(fileInfo); // } } @Override public void onStop(final FileInfo fileInfo) { fileInfo.setStatus(DownloadStatus.STOP); // if (mIsUiThread) { // MainHandler.runInMainThread(new Runnable() { // @Override // public void run() { // mListener.onStop(fileInfo); // } // }); // } else { mListener.onStop(fileInfo); // } } @Override public void onComplete(final FileInfo fileInfo) { fileInfo.setStatus(DownloadStatus.COMPLETE); // if (mIsUiThread) { // MainHandler.runInMainThread(new Runnable() { // @Override // public void run() { // mListener.onComplete(fileInfo); // } // }); // } else { mListener.onComplete(fileInfo); // } DownloadThreadPool.getInstance().cancel(fileInfo.getUrl(), false); } @Override public void onCancel(final FileInfo fileInfo) { fileInfo.setStatus(DownloadStatus.CANCEL); // if (mIsUiThread) { // MainHandler.runInMainThread(new Runnable() { // @Override // public void run() { // mListener.onCancel(fileInfo); // } // }); // } else { mListener.onCancel(fileInfo); // } DownloadThreadPool.getInstance().cancel(fileInfo.getUrl(), true); } @Override public void onError(final FileInfo fileInfo, final String errorMsg) { fileInfo.setStatus(DownloadStatus.ERROR); // if (mIsUiThread) { // MainHandler.runInMainThread(new Runnable() { // @Override // public void run() { // mListener.onError(fileInfo, errorMsg); // } // }); // } else { mListener.onError(fileInfo, errorMsg); // } DownloadThreadPool.getInstance().cancel(fileInfo.getUrl(), false); } }