package com.liulishuo.filedownloader; import android.os.Handler; import android.os.HandlerThread; import android.os.Message; import android.util.SparseArray; import com.liulishuo.filedownloader.BaseDownloadTask; import com.liulishuo.filedownloader.util.FileDownloadLog; import com.liulishuo.filedownloader.util.FileDownloadUtils; import java.lang.ref.WeakReference; import java.util.Iterator; import java.util.List; /* loaded from: classes.dex */ class QueuesHandler implements IQueuesHandler { private final SparseArray a = new SparseArray<>(); private static class SerialFinishListener implements BaseDownloadTask.FinishListener { private final WeakReference a; private int b; public BaseDownloadTask.FinishListener a(int i) { this.b = i; return this; } private SerialFinishListener(WeakReference weakReference) { this.a = weakReference; } @Override // com.liulishuo.filedownloader.BaseDownloadTask.FinishListener public void a(BaseDownloadTask baseDownloadTask) { WeakReference weakReference = this.a; if (weakReference == null || weakReference.get() == null) { return; } this.a.get().a(this.b); } } private class SerialHandlerCallback implements Handler.Callback { private Handler a; private List b; private int c = 0; private SerialFinishListener d = new SerialFinishListener(new WeakReference(this)); SerialHandlerCallback() { } public void b() { a(this.c); } @Override // android.os.Handler.Callback public boolean handleMessage(Message message) { int i = message.what; if (i == 1) { if (message.arg1 < this.b.size()) { this.c = message.arg1; BaseDownloadTask.IRunningTask iRunningTask = this.b.get(this.c); synchronized (iRunningTask.y()) { if (iRunningTask.F().getStatus() == 0 && !FileDownloadList.b().c(iRunningTask)) { BaseDownloadTask F = iRunningTask.F(); SerialFinishListener serialFinishListener = this.d; serialFinishListener.a(this.c + 1); F.a((BaseDownloadTask.FinishListener) serialFinishListener); iRunningTask.A(); } if (FileDownloadLog.a) { FileDownloadLog.a(SerialHandlerCallback.class, "direct go next by not contains %s %d", iRunningTask, Integer.valueOf(message.arg1)); } a(message.arg1 + 1); return true; } } synchronized (QueuesHandler.this.a) { QueuesHandler.this.a.remove(this.b.get(0).i()); } Handler handler = this.a; FileDownloadListener fileDownloadListener = null; if (handler != null && handler.getLooper() != null) { this.a.getLooper().quit(); this.a = null; this.b = null; this.d = null; } if (FileDownloadLog.a) { Object[] objArr = new Object[2]; List list = this.b; if (list != null && list.get(0) != null) { fileDownloadListener = this.b.get(0).F().v(); } objArr[0] = fileDownloadListener; objArr[1] = Integer.valueOf(message.arg1); FileDownloadLog.a(SerialHandlerCallback.class, "final serial %s %d", objArr); } return true; } if (i == 2) { a(); } else if (i == 3) { b(); } return true; } public void a(Handler handler) { this.a = handler; } public void a(List list) { this.b = list; } public void a() { this.b.get(this.c).F().b(this.d); this.a.removeCallbacksAndMessages(null); } /* JADX INFO: Access modifiers changed from: private */ public void a(int i) { Handler handler = this.a; if (handler != null && this.b != null) { Message obtainMessage = handler.obtainMessage(); obtainMessage.what = 1; obtainMessage.arg1 = i; if (FileDownloadLog.a) { Object[] objArr = new Object[2]; List list = this.b; FileDownloadListener fileDownloadListener = null; if (list != null && list.get(0) != null) { fileDownloadListener = this.b.get(0).F().v(); } objArr[0] = fileDownloadListener; objArr[1] = Integer.valueOf(obtainMessage.arg1); FileDownloadLog.a(SerialHandlerCallback.class, "start next %s %s", objArr); } this.a.sendMessage(obtainMessage); return; } FileDownloadLog.e(this, "need go next %d, but params is not ready %s %s", Integer.valueOf(i), this.a, this.b); } } QueuesHandler() { } @Override // com.liulishuo.filedownloader.IQueuesHandler public boolean b(FileDownloadListener fileDownloadListener) { SerialHandlerCallback serialHandlerCallback = new SerialHandlerCallback(); int hashCode = serialHandlerCallback.hashCode(); List a = FileDownloadList.b().a(hashCode, fileDownloadListener); if (a(hashCode, a, fileDownloadListener, true)) { return false; } HandlerThread handlerThread = new HandlerThread(FileDownloadUtils.a("filedownloader serial thread %s-%d", fileDownloadListener, Integer.valueOf(hashCode))); handlerThread.start(); Handler handler = new Handler(handlerThread.getLooper(), serialHandlerCallback); serialHandlerCallback.a(handler); serialHandlerCallback.a(a); serialHandlerCallback.a(0); synchronized (this.a) { this.a.put(hashCode, handler); } return true; } @Override // com.liulishuo.filedownloader.IQueuesHandler public boolean a(FileDownloadListener fileDownloadListener) { int hashCode = fileDownloadListener.hashCode(); List a = FileDownloadList.b().a(hashCode, fileDownloadListener); if (a(hashCode, a, fileDownloadListener, false)) { return false; } Iterator it = a.iterator(); while (it.hasNext()) { it.next().A(); } return true; } @Override // com.liulishuo.filedownloader.IQueuesHandler public void a(List list) { Iterator it = list.iterator(); while (it.hasNext()) { b(this.a.get(it.next().intValue())); } } @Override // com.liulishuo.filedownloader.IQueuesHandler public int a() { return this.a.size(); } @Override // com.liulishuo.filedownloader.IQueuesHandler public boolean a(int i) { return this.a.get(i) != null; } private boolean a(int i, List list, FileDownloadListener fileDownloadListener, boolean z) { if (FileDownloadMonitor.b()) { FileDownloadMonitor.a().a(list.size(), true, fileDownloadListener); } if (FileDownloadLog.a) { FileDownloadLog.d(FileDownloader.class, "start list attachKey[%d] size[%d] listener[%s] isSerial[%B]", Integer.valueOf(i), Integer.valueOf(list.size()), fileDownloadListener, Boolean.valueOf(z)); } if (list != null && !list.isEmpty()) { return false; } FileDownloadLog.e(FileDownloader.class, "Tasks with the listener can't start, because can't find any task with the provided listener, maybe tasks instance has been started in the past, so they are all are inUsing, if in this case, you can use [BaseDownloadTask#reuse] to reuse theme first then start again: [%s, %B]", fileDownloadListener, Boolean.valueOf(z)); return true; } @Override // com.liulishuo.filedownloader.IQueuesHandler public void b() { for (int i = 0; i < this.a.size(); i++) { a(this.a.get(this.a.keyAt(i))); } } private void a(Handler handler) { handler.sendEmptyMessage(2); } private void b(Handler handler) { handler.sendEmptyMessage(3); } }