diff --git a/library/src/main/java/com/liulishuo/filedownloader/FileDownloadMessageStation.java b/library/src/main/java/com/liulishuo/filedownloader/FileDownloadMessageStation.java index 94bbf97e..57f143df 100644 --- a/library/src/main/java/com/liulishuo/filedownloader/FileDownloadMessageStation.java +++ b/library/src/main/java/com/liulishuo/filedownloader/FileDownloadMessageStation.java @@ -21,7 +21,6 @@ import android.os.Message; import com.liulishuo.filedownloader.util.FileDownloadExecutors; -import com.liulishuo.filedownloader.util.FileDownloadLog; import java.util.ArrayList; import java.util.concurrent.Executor; @@ -58,14 +57,6 @@ void requestEnqueue(final IFileDownloadMessenger messenger) { void requestEnqueue(final IFileDownloadMessenger messenger, @SuppressWarnings("SameParameterValue") boolean immediately) { - /** @see #notify(FileDownloadEvent) **/ - if (!messenger.hasReceiver()) { - if (FileDownloadLog.NEED_LOG) { - FileDownloadLog.d(this, "can't handover the message[%s], " + - "no listener be found in task to receive.", messenger); - } - return; - } if (messenger.handoverDirectly()) { messenger.handoverMessage(); diff --git a/library/src/main/java/com/liulishuo/filedownloader/FileDownloadMessenger.java b/library/src/main/java/com/liulishuo/filedownloader/FileDownloadMessenger.java index b528149b..22c20730 100644 --- a/library/src/main/java/com/liulishuo/filedownloader/FileDownloadMessenger.java +++ b/library/src/main/java/com/liulishuo/filedownloader/FileDownloadMessenger.java @@ -194,10 +194,18 @@ public void notifyCompleted(MessageSnapshot snapshot) { } private void process(MessageSnapshot snapshot) { - offer(snapshot); - - FileDownloadMessageStation.getImpl().requestEnqueue(this); + if (mTask.getOrigin().getListener() == null) { + if (FileDownloadMonitor.isValid() && + snapshot.getStatus() == FileDownloadStatus.blockComplete) { + // there is a FileDownloadMonitor, so we have to ensure the 'BaseDownloadTask#over' + // can be invoked. + mLifeCycleCallback.onOver(); + } + } else { + offer(snapshot); + FileDownloadMessageStation.getImpl().requestEnqueue(this); + } } private void offer(MessageSnapshot snapshot) { @@ -257,11 +265,6 @@ public boolean handoverDirectly() { return mTask.getOrigin().isSyncCallback(); } - @Override - public boolean hasReceiver() { - return mTask.getOrigin().getListener() != null; - } - @Override public void reAppointment(BaseDownloadTask.IRunningTask task, BaseDownloadTask.LifeCycleCallback callback) { diff --git a/library/src/main/java/com/liulishuo/filedownloader/IFileDownloadMessenger.java b/library/src/main/java/com/liulishuo/filedownloader/IFileDownloadMessenger.java index c81f805e..5f09b5c9 100644 --- a/library/src/main/java/com/liulishuo/filedownloader/IFileDownloadMessenger.java +++ b/library/src/main/java/com/liulishuo/filedownloader/IFileDownloadMessenger.java @@ -141,12 +141,6 @@ interface IFileDownloadMessenger { */ boolean handoverDirectly(); - /** - * @return {@code true} if has receiver(or listener) to receiver messages. - * @see BaseDownloadTask#getListener() - */ - boolean hasReceiver(); - /** * @param task Re-appointment for this task, when this messenger has already accomplished the * old one.