lingochamp/okdownload

判断任务是否在运行

Open

#277 opened on Jul 17, 2019

View on GitHub
 (1 comment) (0 reactions) (1 assignee)Java (5,058 stars) (748 forks)batch import
featuregood first issue

Description

OkDownload Version

1.0.5

Problem Describe

判断任务是否在运行的代码:

public synchronized boolean isRunning(DownloadTask task) {
        Util.d(TAG, "isRunning: " + task.getId());
        for (DownloadCall call : runningSyncCalls) {
            if (call.isCanceled()) continue;
            if (call.equalsTask(task)) {
                return true;
            }
        }

        for (DownloadCall call : runningAsyncCalls) {
            if (call.isCanceled()) continue;
            if (call.equalsTask(task)) {
                return true;
            }
        }

        return false;
    }

是不是最好再判断下任务是否正在结束?类似下面:

public synchronized boolean isRunning(DownloadTask task) {
        Util.d(TAG, "isRunning: " + task.getId());
        for (DownloadCall call : runningSyncCalls) {
            if (call.isCanceled()) continue;
            if (call.equalsTask(task)) {
                return !call.isFinishing();
            }
        }

        for (DownloadCall call : runningAsyncCalls) {
            if (call.isCanceled()) continue;
            if (call.equalsTask(task)) {
                return !call.isFinishing();
            }
        }

        return false;
    }

因为在taskEnd回调中,如果想获取任务状态,这个时候会获取到正在运行

Contributor guide