逻辑修改
This commit is contained in:
@ -17,9 +17,6 @@
|
|||||||
package com.arialyy.simple.activity;
|
package com.arialyy.simple.activity;
|
||||||
|
|
||||||
import android.content.BroadcastReceiver;
|
import android.content.BroadcastReceiver;
|
||||||
import android.content.Context;
|
|
||||||
import android.content.Intent;
|
|
||||||
import android.content.IntentFilter;
|
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.Environment;
|
import android.os.Environment;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
@ -39,13 +36,9 @@ import com.arialyy.downloadutil.core.scheduler.OnSchedulerListener;
|
|||||||
import com.arialyy.downloadutil.core.task.Task;
|
import com.arialyy.downloadutil.core.task.Task;
|
||||||
import com.arialyy.downloadutil.orm.DbEntity;
|
import com.arialyy.downloadutil.orm.DbEntity;
|
||||||
import com.arialyy.downloadutil.util.CommonUtil;
|
import com.arialyy.downloadutil.util.CommonUtil;
|
||||||
import com.arialyy.frame.util.show.L;
|
|
||||||
import com.arialyy.simple.R;
|
import com.arialyy.simple.R;
|
||||||
import com.arialyy.simple.base.BaseActivity;
|
import com.arialyy.simple.base.BaseActivity;
|
||||||
import com.arialyy.simple.databinding.ActivitySingleBinding;
|
import com.arialyy.simple.databinding.ActivitySingleBinding;
|
||||||
import com.arialyy.simple.module.DownloadModule;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
public class SingleTaskActivity extends BaseActivity<ActivitySingleBinding> {
|
public class SingleTaskActivity extends BaseActivity<ActivitySingleBinding> {
|
||||||
public static final int DOWNLOAD_PRE = 0x01;
|
public static final int DOWNLOAD_PRE = 0x01;
|
||||||
@ -207,7 +200,7 @@ public class SingleTaskActivity extends BaseActivity<ActivitySingleBinding> {
|
|||||||
//commands.add(startCmd);
|
//commands.add(startCmd);
|
||||||
//mManager.setCmds(commands).exe();
|
//mManager.setCmds(commands).exe();
|
||||||
mManager.setCmd(CmdFactory.getInstance().createCmd(mEntity, CmdFactory.TASK_SINGLE))
|
mManager.setCmd(CmdFactory.getInstance().createCmd(mEntity, CmdFactory.TASK_SINGLE))
|
||||||
.regSchedulerListener(new OnSchedulerListener() {
|
.addSchedulerListener(new OnSchedulerListener() {
|
||||||
@Override public void onTaskStart(Task task) {
|
@Override public void onTaskStart(Task task) {
|
||||||
mUpdateHandler.obtainMessage(DOWNLOAD_PRE, task.getDownloadEntity().getFileSize())
|
mUpdateHandler.obtainMessage(DOWNLOAD_PRE, task.getDownloadEntity().getFileSize())
|
||||||
.sendToTarget();
|
.sendToTarget();
|
||||||
|
@ -0,0 +1,9 @@
|
|||||||
|
package com.arialyy.downloadutil.core;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
import com.arialyy.downloadutil.core.scheduler.OnSchedulerListener;
|
||||||
|
|
||||||
|
public class AMEntity {
|
||||||
|
Context context;
|
||||||
|
OnSchedulerListener listener;
|
||||||
|
}
|
@ -0,0 +1,105 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2016 AriaLyy(DownloadUtil)
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.arialyy.downloadutil.core;
|
||||||
|
|
||||||
|
import android.annotation.TargetApi;
|
||||||
|
import android.content.Context;
|
||||||
|
import android.os.Build;
|
||||||
|
import com.arialyy.downloadutil.core.command.CmdFactory;
|
||||||
|
import com.arialyy.downloadutil.core.command.IDownloadCmd;
|
||||||
|
import com.arialyy.downloadutil.core.scheduler.OnSchedulerListener;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by lyy on 2016/12/1.
|
||||||
|
*/
|
||||||
|
@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH_MR1)
|
||||||
|
public class Aria {
|
||||||
|
private static final Object LOCK = new Object();
|
||||||
|
private static volatile Aria INSTANCE = null;
|
||||||
|
private DownloadManager mDownloadManager;
|
||||||
|
|
||||||
|
private Aria() {
|
||||||
|
//mDownloadManager = DownloadManager.getInstance();
|
||||||
|
}
|
||||||
|
|
||||||
|
private Aria(Context context) {
|
||||||
|
mDownloadManager = DownloadManager.init(context);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Aria get(Context context) {
|
||||||
|
if (INSTANCE == null) {
|
||||||
|
synchronized (LOCK) {
|
||||||
|
INSTANCE = new Aria();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return INSTANCE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 开始下载
|
||||||
|
*/
|
||||||
|
public Aria start(DownloadEntity entity) {
|
||||||
|
List<IDownloadCmd> cmds = new ArrayList<>();
|
||||||
|
cmds.add(createCmd(entity, CmdFactory.TASK_CREATE));
|
||||||
|
cmds.add(createCmd(entity, CmdFactory.TASK_START));
|
||||||
|
mDownloadManager.setCmds(cmds).exe();
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 停止下载
|
||||||
|
*/
|
||||||
|
public void stop(DownloadEntity entity) {
|
||||||
|
mDownloadManager.setCmd(createCmd(entity, CmdFactory.TASK_STOP)).exe();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 恢复下载
|
||||||
|
*/
|
||||||
|
public void resume(DownloadEntity entity) {
|
||||||
|
mDownloadManager.setCmd(createCmd(entity, CmdFactory.TASK_START)).exe();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 取消下载
|
||||||
|
*/
|
||||||
|
public void cancel(DownloadEntity entity) {
|
||||||
|
mDownloadManager.setCmd(createCmd(entity, CmdFactory.TASK_CANCEL)).exe();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 添加调度器回调
|
||||||
|
*/
|
||||||
|
public Aria addSchedulerListener(Context context, OnSchedulerListener listener) {
|
||||||
|
//mDownloadManager.getTaskQueue().getDownloadSchedulers().addSchedulerListener(listener);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 移除回调
|
||||||
|
*/
|
||||||
|
public Aria removeSchedulerListener(Context context) {
|
||||||
|
//mDownloadManager.getTaskQueue().getDownloadSchedulers().removeSchedulerListener(listener);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
private IDownloadCmd createCmd(DownloadEntity entity, int cmd) {
|
||||||
|
return CmdFactory.getInstance().createCmd(entity, cmd);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,36 @@
|
|||||||
|
package com.arialyy.downloadutil.core;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
import com.arialyy.downloadutil.core.scheduler.OnSchedulerListener;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by lyy on 2016/12/1.
|
||||||
|
*/
|
||||||
|
public class AriaManager {
|
||||||
|
private Map<String, AMEntity> mAria = new HashMap<>();
|
||||||
|
|
||||||
|
private static final Object LOCK = new Object();
|
||||||
|
private static volatile AriaManager INSTANCE = null;
|
||||||
|
|
||||||
|
private AriaManager(){
|
||||||
|
}
|
||||||
|
|
||||||
|
public static AriaManager getInstance() {
|
||||||
|
if (INSTANCE == null) {
|
||||||
|
synchronized (LOCK) {
|
||||||
|
INSTANCE = new AriaManager();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return INSTANCE;
|
||||||
|
}
|
||||||
|
|
||||||
|
public synchronized void get(Context context){
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -22,7 +22,6 @@ import android.util.Log;
|
|||||||
import com.arialyy.downloadutil.core.command.IDownloadCmd;
|
import com.arialyy.downloadutil.core.command.IDownloadCmd;
|
||||||
import com.arialyy.downloadutil.core.queue.ITaskQueue;
|
import com.arialyy.downloadutil.core.queue.ITaskQueue;
|
||||||
import com.arialyy.downloadutil.core.queue.DownloadTaskQueue;
|
import com.arialyy.downloadutil.core.queue.DownloadTaskQueue;
|
||||||
import com.arialyy.downloadutil.core.scheduler.OnSchedulerListener;
|
|
||||||
import com.arialyy.downloadutil.orm.DbEntity;
|
import com.arialyy.downloadutil.orm.DbEntity;
|
||||||
import com.arialyy.downloadutil.orm.DbUtil;
|
import com.arialyy.downloadutil.orm.DbUtil;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@ -124,15 +123,6 @@ public class DownloadManager {
|
|||||||
return DbEntity.findAllData(DownloadEntity.class);
|
return DbEntity.findAllData(DownloadEntity.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 注册
|
|
||||||
* @param listener
|
|
||||||
*/
|
|
||||||
public DownloadManager regSchedulerListener(OnSchedulerListener listener) {
|
|
||||||
mTaskQueue.getDownloadSchedulers().regTargetListener(listener);
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取任务队列
|
* 获取任务队列
|
||||||
*/
|
*/
|
||||||
|
@ -16,13 +16,19 @@
|
|||||||
|
|
||||||
package com.arialyy.downloadutil.core.scheduler;
|
package com.arialyy.downloadutil.core.scheduler;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
import android.os.Message;
|
import android.os.Message;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
import android.util.SparseArray;
|
||||||
|
import android.util.SparseIntArray;
|
||||||
import com.arialyy.downloadutil.core.DownloadEntity;
|
import com.arialyy.downloadutil.core.DownloadEntity;
|
||||||
import com.arialyy.downloadutil.core.queue.ITaskQueue;
|
import com.arialyy.downloadutil.core.queue.ITaskQueue;
|
||||||
import com.arialyy.downloadutil.core.task.Task;
|
import com.arialyy.downloadutil.core.task.Task;
|
||||||
import com.arialyy.downloadutil.core.queue.pool.ExecutePool;
|
import com.arialyy.downloadutil.core.queue.pool.ExecutePool;
|
||||||
import com.arialyy.downloadutil.core.queue.DownloadTaskQueue;
|
import com.arialyy.downloadutil.core.queue.DownloadTaskQueue;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by lyy on 2016/8/16.
|
* Created by lyy on 2016/8/16.
|
||||||
@ -69,7 +75,8 @@ public class DownloadSchedulers implements IDownloadSchedulers {
|
|||||||
/**
|
/**
|
||||||
* 下载器任务监听
|
* 下载器任务监听
|
||||||
*/
|
*/
|
||||||
OnSchedulerListener mTargetListener;
|
OnSchedulerListener mSchedulerListener;
|
||||||
|
Map<Integer, OnSchedulerListener> mSchedulerListeners = new HashMap<>();
|
||||||
ITaskQueue mQueue;
|
ITaskQueue mQueue;
|
||||||
|
|
||||||
public DownloadSchedulers(ITaskQueue downloadTaskQueue) {
|
public DownloadSchedulers(ITaskQueue downloadTaskQueue) {
|
||||||
@ -116,26 +123,38 @@ public class DownloadSchedulers implements IDownloadSchedulers {
|
|||||||
* @param entity 下载实体
|
* @param entity 下载实体
|
||||||
*/
|
*/
|
||||||
private void callback(int state, DownloadEntity entity) {
|
private void callback(int state, DownloadEntity entity) {
|
||||||
if (mTargetListener != null) {
|
if (mSchedulerListeners.size() > 0) {
|
||||||
|
//Set<Map.Entry<Integer, String>>
|
||||||
|
for (Map.Entry<Integer, OnSchedulerListener> entry : mSchedulerListeners.entrySet()) {
|
||||||
|
callback(state, entity, entry.getValue());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void callback(int state, DownloadEntity entity, OnSchedulerListener listener) {
|
||||||
|
if (listener != null) {
|
||||||
Task task = mQueue.getTask(entity);
|
Task task = mQueue.getTask(entity);
|
||||||
switch (state) {
|
switch (state) {
|
||||||
case RUNNING:
|
case RUNNING:
|
||||||
mTargetListener.onTaskRunning(task);
|
listener.onTaskRunning(task);
|
||||||
break;
|
break;
|
||||||
case START:
|
case START:
|
||||||
mTargetListener.onTaskStart(task);
|
listener.onTaskStart(task);
|
||||||
break;
|
break;
|
||||||
case STOP:
|
case STOP:
|
||||||
mTargetListener.onTaskStop(task);
|
listener.onTaskStop(task);
|
||||||
break;
|
break;
|
||||||
case CANCEL:
|
case CANCEL:
|
||||||
mTargetListener.onTaskCancel(task);
|
listener.onTaskCancel(task);
|
||||||
|
removeSchedulerListener(listener);
|
||||||
break;
|
break;
|
||||||
case COMPLETE:
|
case COMPLETE:
|
||||||
mTargetListener.onTaskComplete(task);
|
listener.onTaskComplete(task);
|
||||||
|
removeSchedulerListener(listener);
|
||||||
break;
|
break;
|
||||||
case FAIL:
|
case FAIL:
|
||||||
mTargetListener.onTaskFail(task);
|
listener.onTaskFail(task);
|
||||||
|
removeSchedulerListener(listener);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -172,12 +191,12 @@ public class DownloadSchedulers implements IDownloadSchedulers {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public void regTargetListener(OnSchedulerListener targetListener) {
|
@Override public void addSchedulerListener(Context context, OnSchedulerListener schedulerListener) {
|
||||||
this.mTargetListener = targetListener;
|
mSchedulerListeners.put(schedulerListener.hashCode(), schedulerListener);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public void unRegTargetListener(OnSchedulerListener targetListener) {
|
@Override public void removeSchedulerListener(OnSchedulerListener schedulerListener) {
|
||||||
mTargetListener = null;
|
mSchedulerListeners.remove(schedulerListener.hashCode());
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setFailNum(int mFailNum) {
|
public void setFailNum(int mFailNum) {
|
||||||
|
@ -16,6 +16,7 @@
|
|||||||
|
|
||||||
package com.arialyy.downloadutil.core.scheduler;
|
package com.arialyy.downloadutil.core.scheduler;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
import com.arialyy.downloadutil.core.DownloadEntity;
|
import com.arialyy.downloadutil.core.DownloadEntity;
|
||||||
|
|
||||||
@ -28,14 +29,14 @@ public interface IDownloadSchedulers extends Handler.Callback {
|
|||||||
/**
|
/**
|
||||||
* 注册下载器监听
|
* 注册下载器监听
|
||||||
*
|
*
|
||||||
* @param targetListener {@link OnSchedulerListener}
|
* @param schedulerListener {@link OnSchedulerListener}
|
||||||
*/
|
*/
|
||||||
public void regTargetListener(OnSchedulerListener targetListener);
|
public void addSchedulerListener(Context context, OnSchedulerListener schedulerListener);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 取消注册监听器
|
* 取消注册监听器
|
||||||
*/
|
*/
|
||||||
public void unRegTargetListener(OnSchedulerListener targetListener);
|
public void removeSchedulerListener(OnSchedulerListener schedulerListener);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 处理下载任务下载失败的情形
|
* 处理下载任务下载失败的情形
|
||||||
|
Reference in New Issue
Block a user