AriaManager 逻辑重写,api接口优化

This commit is contained in:
AriaLyy
2017-02-07 17:33:03 +08:00
parent 62d6434914
commit 90c7cd78ff
23 changed files with 452 additions and 415 deletions

View File

@ -26,7 +26,6 @@ import android.app.Service;
import android.content.Context; import android.content.Context;
import android.os.Build; import android.os.Build;
import android.widget.PopupWindow; import android.widget.PopupWindow;
import com.arialyy.aria.core.receiver.DownloadReceiver;
import com.arialyy.aria.core.scheduler.OnSchedulerListener; import com.arialyy.aria.core.scheduler.OnSchedulerListener;
import com.arialyy.aria.core.task.Task; import com.arialyy.aria.core.task.Task;

View File

@ -15,33 +15,30 @@
*/ */
package com.arialyy.aria.core; package com.arialyy.aria.core;
import android.annotation.SuppressLint;
import android.annotation.TargetApi; import android.annotation.TargetApi;
import android.app.Activity; import android.app.Activity;
import android.app.Application; import android.app.Application;
import android.app.Dialog; import android.app.Dialog;
import android.content.Context; import android.content.Context;
import android.content.DialogInterface;
import android.os.Build; import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.os.Message;
import android.support.v4.app.Fragment; import android.support.v4.app.Fragment;
import android.text.TextUtils; import android.text.TextUtils;
import android.util.Log; import android.util.Log;
import android.widget.PopupWindow; import android.widget.PopupWindow;
import com.arialyy.aria.core.command.download.CmdFactory;
import com.arialyy.aria.core.receiver.DownloadReceiver;
import com.arialyy.aria.util.CAConfiguration;
import com.arialyy.aria.util.CheckUtil;
import com.arialyy.aria.util.CommonUtil;
import com.arialyy.aria.core.command.download.IDownloadCmd; import com.arialyy.aria.core.command.download.IDownloadCmd;
import com.arialyy.aria.core.queue.DownloadTaskQueue;
import com.arialyy.aria.core.queue.ITaskQueue;
import com.arialyy.aria.orm.DbEntity;
import com.arialyy.aria.orm.DbUtil;
import com.arialyy.aria.util.CAConfiguration;
import com.arialyy.aria.util.Configuration; import com.arialyy.aria.util.Configuration;
import java.lang.reflect.Field;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.Iterator; import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Set;
/** /**
* Created by lyy on 2016/12/1. * Created by lyy on 2016/12/1.
@ -50,18 +47,26 @@ import java.util.Set;
*/ */
@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH) public class AriaManager { @TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH) public class AriaManager {
private static final String TAG = "AriaManager"; private static final String TAG = "AriaManager";
private static final String DOWNLOAD = "_download";
private static final String UPLOAD = "_upload";
private static final Object LOCK = new Object(); private static final Object LOCK = new Object();
private static volatile AriaManager INSTANCE = null; @SuppressLint("StaticFieldLeak") private static volatile AriaManager INSTANCE = null;
private Map<String, DownloadReceiver> mDownloadTargets = new HashMap<>(); Map<String, IReceiver> mReceivers = new HashMap<>();
private DownloadManager mManager;
private LifeCallback mLifeCallback; private LifeCallback mLifeCallback;
public static Context APP;
private ITaskQueue mTaskQueue;
private List<IDownloadCmd> mCommands = new ArrayList<>();
private AriaManager(Context context) { private AriaManager(Context context) {
DbUtil.init(context.getApplicationContext());
APP = context;
DownloadTaskQueue.Builder builder = new DownloadTaskQueue.Builder(context);
mTaskQueue = builder.build();
regAppLifeCallback(context); regAppLifeCallback(context);
mManager = DownloadManager.init(context);
} }
static AriaManager getInstance(Context context) { public static AriaManager getInstance(Context context) {
if (INSTANCE == null) { if (INSTANCE == null) {
synchronized (LOCK) { synchronized (LOCK) {
INSTANCE = new AriaManager(context); INSTANCE = new AriaManager(context);
@ -70,8 +75,54 @@ import java.util.Set;
return INSTANCE; return INSTANCE;
} }
List<DownloadEntity> getAllDownloadEntity() {
return DbEntity.findAllData(DownloadEntity.class);
}
/**
* 获取任务队列
*/
public ITaskQueue getTaskQueue() {
return mTaskQueue;
}
/**
* 设置命令
*/
AriaManager setCmd(IDownloadCmd command) {
mCommands.add(command);
return this;
}
/**
* 设置一组命令
*/
AriaManager setCmds(List<IDownloadCmd> commands) {
if (commands != null && commands.size() > 0) {
mCommands.addAll(commands);
}
return this;
}
/**
* 执行所有设置的命令
*/
synchronized void exe() {
for (IDownloadCmd command : mCommands) {
command.executeCmd();
}
mCommands.clear();
}
/**
* 处理下载操作
*/
DownloadReceiver download(Object obj) { DownloadReceiver download(Object obj) {
return getDownloadTarget(obj); IReceiver receiver = mReceivers.get(getKey(true, obj));
if (receiver == null) {
receiver = putReceiver(true, obj);
}
return (receiver instanceof DownloadReceiver) ? (DownloadReceiver) receiver : null;
} }
/** /**
@ -92,43 +143,6 @@ import java.util.Set;
CAConfiguration.CA_PATH = caPath; CAConfiguration.CA_PATH = caPath;
} }
/**
* 获取下载列表
*/
public List<DownloadEntity> getDownloadList() {
return DownloadEntity.findAllData(DownloadEntity.class);
}
/**
* 通过下载链接获取下载实体
*/
public DownloadEntity getDownloadEntity(String downloadUrl) {
CheckUtil.checkDownloadUrl(downloadUrl);
return DownloadEntity.findData(DownloadEntity.class, "downloadUrl=?", downloadUrl);
}
/**
* 下载任务是否存在
*/
public boolean taskExists(String downloadUrl) {
return DownloadEntity.findData(DownloadEntity.class, "downloadUrl=?", downloadUrl) != null;
}
/**
* 停止所有正在下载的任务
*/
public void stopAllTask() {
List<DownloadEntity> allEntity = mManager.getAllDownloadEntity();
List<IDownloadCmd> stopCmds = new ArrayList<>();
for (DownloadEntity entity : allEntity) {
if (entity.getState() == DownloadEntity.STATE_DOWNLOAD_ING) {
stopCmds.add(
CommonUtil.createDownloadCmd(new DownloadTaskEntity(entity), CmdFactory.TASK_STOP));
}
}
mManager.setCmds(stopCmds).exe();
}
/** /**
* 设置下载超时时间 * 设置下载超时时间
*/ */
@ -138,7 +152,7 @@ import java.util.Set;
} }
/** /**
* 设置下载失败重试次数 * 设置失败重试次数
*/ */
public AriaManager setReTryNum(int reTryNum) { public AriaManager setReTryNum(int reTryNum) {
Configuration.getInstance().setReTryNum(reTryNum); Configuration.getInstance().setReTryNum(reTryNum);
@ -146,7 +160,7 @@ import java.util.Set;
} }
/** /**
* 设置下载失败重试间隔 * 设置失败重试间隔
*/ */
public AriaManager setReTryInterval(int interval) { public AriaManager setReTryInterval(int interval) {
Configuration.getInstance().setReTryInterval(interval); Configuration.getInstance().setReTryInterval(interval);
@ -171,32 +185,40 @@ import java.util.Set;
Log.w(TAG, "最大任务数不能小于 1"); Log.w(TAG, "最大任务数不能小于 1");
return this; return this;
} }
mManager.getTaskQueue().setDownloadNum(maxDownloadNum); mTaskQueue.setDownloadNum(maxDownloadNum);
return this; return this;
} }
/** private IReceiver putReceiver(boolean isDownload, Object obj) {
* 删除所有任务 final String key = getKey(isDownload, obj);
*/ IReceiver receiver = mReceivers.get(key);
public void cancelAllTask() { final WidgetLiftManager widgetLiftManager = new WidgetLiftManager();
List<DownloadEntity> allEntity = mManager.getAllDownloadEntity(); if (obj instanceof Dialog) {
List<IDownloadCmd> cancelCmds = new ArrayList<>(); widgetLiftManager.handleDialogLift((Dialog) obj);
for (DownloadEntity entity : allEntity) { } else if (obj instanceof PopupWindow) {
cancelCmds.add( widgetLiftManager.handlePopupWindowLift((PopupWindow) obj);
CommonUtil.createDownloadCmd(new DownloadTaskEntity(entity), CmdFactory.TASK_CANCEL));
} }
mManager.setCmds(cancelCmds).exe();
Set<String> keys = mDownloadTargets.keySet(); if (receiver == null) {
for (String key : keys) { if (isDownload) {
DownloadReceiver target = mDownloadTargets.get(key); DownloadReceiver dReceiver = new DownloadReceiver();
target.removeSchedulerListener(); dReceiver.targetName = obj.getClass().getName();
mDownloadTargets.remove(key); mReceivers.put(key, dReceiver);
receiver = dReceiver;
} else {
UploadReceiver uReceiver = new UploadReceiver();
receiver = uReceiver;
}
} }
return receiver;
} }
private DownloadReceiver putTarget(Object obj) { /**
* 根据功能类型和控件类型获取对应的key
*/
private String getKey(boolean isDownload, Object obj) {
String clsName = obj.getClass().getName(); String clsName = obj.getClass().getName();
DownloadReceiver target = null;
String key = ""; String key = "";
if (!(obj instanceof Activity)) { if (!(obj instanceof Activity)) {
if (obj instanceof android.support.v4.app.Fragment) { if (obj instanceof android.support.v4.app.Fragment) {
@ -210,7 +232,6 @@ import java.util.Set;
} else { } else {
key = clsName; key = clsName;
} }
handleDialogLift((Dialog) obj);
} else if (obj instanceof PopupWindow) { } else if (obj instanceof PopupWindow) {
Context context = ((PopupWindow) obj).getContentView().getContext(); Context context = ((PopupWindow) obj).getContentView().getContext();
if (context instanceof Activity) { if (context instanceof Activity) {
@ -218,7 +239,6 @@ import java.util.Set;
} else { } else {
key = clsName; key = clsName;
} }
handlePopupWindowLift((PopupWindow) obj);
} }
} else { } else {
key = clsName; key = clsName;
@ -226,76 +246,8 @@ import java.util.Set;
if (TextUtils.isEmpty(key)) { if (TextUtils.isEmpty(key)) {
throw new IllegalArgumentException("未知类型"); throw new IllegalArgumentException("未知类型");
} }
target = mDownloadTargets.get(key); key += isDownload ? DOWNLOAD : UPLOAD;
if (target == null) { return key;
target = new DownloadReceiver();
target.targetName = obj.getClass().getName();
mDownloadTargets.put(key, target);
}
return target;
}
/**
* 出来悬浮框取消或dismiss
*/
private void handlePopupWindowLift(PopupWindow popupWindow) {
try {
Field dismissField = CommonUtil.getField(popupWindow.getClass(), "mOnDismissListener");
PopupWindow.OnDismissListener listener =
(PopupWindow.OnDismissListener) dismissField.get(popupWindow);
if (listener != null) {
Log.e(TAG, "你已经对PopupWindow设置了Dismiss事件。为了防止内存泄露"
+ "请在dismiss方法中调用Aria.download(this).removeSchedulerListener();来注销事件");
} else {
popupWindow.setOnDismissListener(createPopupWindowListener(popupWindow));
}
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
/**
* 创建popupWindow dismiss事件
*/
private PopupWindow.OnDismissListener createPopupWindowListener(final PopupWindow popupWindow) {
return new PopupWindow.OnDismissListener() {
@Override public void onDismiss() {
destroySchedulerListener(popupWindow);
}
};
}
/**
* 处理对话框取消或dismiss
*/
private void handleDialogLift(Dialog dialog) {
try {
Field dismissField = CommonUtil.getField(dialog.getClass(), "mDismissMessage");
Message dismissMsg = (Message) dismissField.get(dialog);
//如果Dialog已经设置Dismiss事件则查找cancel事件
if (dismissMsg != null) {
Field cancelField = CommonUtil.getField(dialog.getClass(), "mCancelMessage");
Message cancelMsg = (Message) cancelField.get(dialog);
if (cancelMsg != null) {
Log.e(TAG, "你已经对Dialog设置了Dismiss和cancel事件。为了防止内存泄露"
+ "请在dismiss方法中调用Aria.download(this).removeSchedulerListener();来注销事件");
} else {
dialog.setOnCancelListener(createCancelListener());
}
} else {
dialog.setOnDismissListener(createDismissListener());
}
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
private DownloadReceiver getDownloadTarget(Object obj) {
DownloadReceiver target = mDownloadTargets.get(obj.getClass().getName());
if (target == null) {
target = putTarget(obj);
}
return target;
} }
/** /**
@ -309,43 +261,17 @@ import java.util.Set;
} }
} }
/**
* 创建Dialog取消事件
*/
private Dialog.OnCancelListener createCancelListener() {
return new Dialog.OnCancelListener() {
@Override public void onCancel(DialogInterface dialog) {
destroySchedulerListener(dialog);
}
};
}
/**
* 创建Dialog dismiss取消事件
*/
private Dialog.OnDismissListener createDismissListener() {
return new Dialog.OnDismissListener() {
@Override public void onDismiss(DialogInterface dialog) {
destroySchedulerListener(dialog);
}
};
}
/** /**
* onDestroy * onDestroy
*/ */
private void destroySchedulerListener(Object obj) { void destroySchedulerListener(Object obj) {
Set<String> keys = mDownloadTargets.keySet();
String clsName = obj.getClass().getName(); String clsName = obj.getClass().getName();
for ( for (Iterator<Map.Entry<String, IReceiver>> iter = mReceivers.entrySet().iterator();
Iterator<Map.Entry<String, DownloadReceiver>> iter = mDownloadTargets.entrySet().iterator();
iter.hasNext(); ) { iter.hasNext(); ) {
Map.Entry<String, DownloadReceiver> entry = iter.next(); Map.Entry<String, IReceiver> entry = iter.next();
String key = entry.getKey(); String key = entry.getKey();
if (key.equals(clsName) || key.contains(clsName)) { if (key.contains(clsName)) {
DownloadReceiver receiver = mDownloadTargets.get(key); IReceiver receiver = mReceivers.get(key);
receiver.removeSchedulerListener(); receiver.removeSchedulerListener();
receiver.destroy(); receiver.destroy();
iter.remove(); iter.remove();

View File

@ -1,107 +0,0 @@
/*
* Copyright (C) 2016 AriaLyy(https://github.com/AriaLyy/Aria)
*
* 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.aria.core;
import android.content.Context;
import com.arialyy.aria.core.queue.ITaskQueue;
import com.arialyy.aria.orm.DbUtil;
import com.arialyy.aria.core.command.download.IDownloadCmd;
import com.arialyy.aria.core.queue.DownloadTaskQueue;
import com.arialyy.aria.orm.DbEntity;
import com.arialyy.aria.util.Configuration;
import java.util.ArrayList;
import java.util.List;
/**
* Created by lyy on 2016/8/11.
* 下载管理器,通过命令的方式控制下载
*/
public class DownloadManager {
private static final String TAG = "DownloadManager";
private static final Object LOCK = new Object();
private static volatile DownloadManager INSTANCE = null;
private List<IDownloadCmd> mCommands = new ArrayList<>();
public static Context APP;
private ITaskQueue mTaskQueue;
private static Configuration mConfig;
private DownloadManager() {
}
private DownloadManager(Context context) {
APP = context;
DownloadTaskQueue.Builder builder = new DownloadTaskQueue.Builder(context);
mTaskQueue = builder.build();
DbUtil.init(context);
}
static DownloadManager init(Context context) {
if (INSTANCE == null) {
synchronized (LOCK) {
INSTANCE = new DownloadManager(context.getApplicationContext());
}
}
return INSTANCE;
}
public static DownloadManager getInstance() {
if (INSTANCE == null) {
throw new NullPointerException("请在Application中调用init进行下载器注册");
}
return INSTANCE;
}
List<DownloadEntity> getAllDownloadEntity() {
return DbEntity.findAllData(DownloadEntity.class);
}
/**
* 获取任务队列
*/
public ITaskQueue getTaskQueue() {
return mTaskQueue;
}
/**
* 设置命令
*/
DownloadManager setCmd(IDownloadCmd command) {
mCommands.add(command);
return this;
}
/**
* 设置一组命令
*/
DownloadManager setCmds(List<IDownloadCmd> commands) {
if (commands != null && commands.size() > 0) {
mCommands.addAll(commands);
}
return this;
}
/**
* 执行所有设置的命令
*/
synchronized void exe() {
for (IDownloadCmd command : mCommands) {
command.executeCmd();
}
mCommands.clear();
}
}

View File

@ -0,0 +1,141 @@
/*
* Copyright (C) 2016 AriaLyy(https://github.com/AriaLyy/Aria)
*
* 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.aria.core;
import android.support.annotation.NonNull;
import com.arialyy.aria.core.command.download.CmdFactory;
import com.arialyy.aria.core.command.download.IDownloadCmd;
import com.arialyy.aria.core.scheduler.DownloadSchedulers;
import com.arialyy.aria.core.scheduler.OnSchedulerListener;
import com.arialyy.aria.util.CheckUtil;
import com.arialyy.aria.util.CommonUtil;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
/**
* Created by lyy on 2016/12/5.
* 下载功能接收器
*/
public class DownloadReceiver implements IReceiver{
private static final String TAG = "DownloadReceiver";
public String targetName;
public OnSchedulerListener listener;
/**
* {@link #load(String)},请使用该方法
*/
@Deprecated public DownloadTarget load(DownloadEntity entity) {
return new DownloadTarget(entity, targetName);
}
/**
* 读取下载链接
*/
public DownloadTarget load(@NonNull String downloadUrl) {
CheckUtil.checkDownloadUrl(downloadUrl);
DownloadEntity entity =
DownloadEntity.findData(DownloadEntity.class, "downloadUrl=?", downloadUrl);
if (entity == null) {
entity = new DownloadEntity();
}
entity.setDownloadUrl(downloadUrl);
return new DownloadTarget(entity, targetName);
}
/**
* 添加调度器回调
*/
public DownloadReceiver addSchedulerListener(OnSchedulerListener listener) {
this.listener = listener;
DownloadSchedulers.getInstance().addSchedulerListener(targetName, listener);
return this;
}
/**
* 移除回调
*/
@Override
public void removeSchedulerListener() {
if (listener != null) {
DownloadSchedulers.getInstance().removeSchedulerListener(targetName, listener);
}
}
@Override
public void destroy() {
targetName = null;
listener = null;
}
/**
* 获取下载列表
*/
public List<DownloadEntity> getDownloadList() {
return DownloadEntity.findAllData(DownloadEntity.class);
}
/**
* 通过下载链接获取下载实体
*/
public DownloadEntity getDownloadEntity(String downloadUrl) {
CheckUtil.checkDownloadUrl(downloadUrl);
return DownloadEntity.findData(DownloadEntity.class, "downloadUrl=?", downloadUrl);
}
/**
* 下载任务是否存在
*/
public boolean taskExists(String downloadUrl) {
return DownloadEntity.findData(DownloadEntity.class, "downloadUrl=?", downloadUrl) != null;
}
/**
* 停止所有正在下载的任务
*/
public void stopAllTask() {
final AriaManager ariaManager = AriaManager.getInstance(AriaManager.APP);
List<DownloadEntity> allEntity = ariaManager.getAllDownloadEntity();
List<IDownloadCmd> stopCmds = new ArrayList<>();
for (DownloadEntity entity : allEntity) {
if (entity.getState() == DownloadEntity.STATE_DOWNLOAD_ING) {
stopCmds.add(
CommonUtil.createDownloadCmd(new DownloadTaskEntity(entity), CmdFactory.TASK_STOP));
}
}
ariaManager.setCmds(stopCmds).exe();
}
/**
* 删除所有任务
*/
public void cancelAllTask() {
final AriaManager ariaManager = AriaManager.getInstance(AriaManager.APP);
List<DownloadEntity> allEntity = ariaManager.getAllDownloadEntity();
List<IDownloadCmd> cancelCmds = new ArrayList<>();
for (DownloadEntity entity : allEntity) {
cancelCmds.add(
CommonUtil.createDownloadCmd(new DownloadTaskEntity(entity), CmdFactory.TASK_CANCEL));
}
ariaManager.setCmds(cancelCmds).exe();
Set<String> keys = ariaManager.mReceivers.keySet();
for (String key : keys) {
IReceiver receiver = ariaManager.mReceivers.get(key);
receiver.removeSchedulerListener();
ariaManager.mReceivers.remove(key);
}
}
}

View File

@ -22,22 +22,20 @@ import com.arialyy.aria.core.command.download.IDownloadCmd;
import com.arialyy.aria.util.CheckUtil; import com.arialyy.aria.util.CheckUtil;
import com.arialyy.aria.util.CommonUtil; import com.arialyy.aria.util.CommonUtil;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
import java.util.WeakHashMap;
/** /**
* Created by lyy on 2016/12/5. * Created by lyy on 2016/12/5.
* https://github.com/AriaLyy/Aria * https://github.com/AriaLyy/Aria
*/ */
public class AMTarget { public class DownloadTarget {
DownloadEntity entity; DownloadEntity entity;
String targetName; String targetName;
DownloadTaskEntity taskEntity; DownloadTaskEntity taskEntity;
public AMTarget(DownloadEntity entity, String targetName) { public DownloadTarget(DownloadEntity entity, String targetName) {
this.entity = entity; this.entity = entity;
this.targetName = targetName; this.targetName = targetName;
taskEntity = new DownloadTaskEntity(entity); taskEntity = new DownloadTaskEntity(entity);
@ -49,7 +47,7 @@ public class AMTarget {
* @param key 头部key * @param key 头部key
* @param header 头部value * @param header 头部value
*/ */
public AMTarget addHeader(@NonNull String key, @NonNull String header) { public DownloadTarget addHeader(@NonNull String key, @NonNull String header) {
taskEntity.headers.put(key, header); taskEntity.headers.put(key, header);
return this; return this;
} }
@ -59,7 +57,7 @@ public class AMTarget {
* *
* @param headers Map<Key, Value> * @param headers Map<Key, Value>
*/ */
public AMTarget addHeaders(Map<String, String> headers) { public DownloadTarget addHeaders(Map<String, String> headers) {
if (headers != null && headers.size() > 0) { if (headers != null && headers.size() > 0) {
Set<String> keys = headers.keySet(); Set<String> keys = headers.keySet();
for (String key : keys) { for (String key : keys) {
@ -72,7 +70,7 @@ public class AMTarget {
/** /**
* 设置文件存储路径 * 设置文件存储路径
*/ */
public AMTarget setDownloadPath(@NonNull String downloadPath) { public DownloadTarget setDownloadPath(@NonNull String downloadPath) {
if (TextUtils.isEmpty(downloadPath)) { if (TextUtils.isEmpty(downloadPath)) {
throw new IllegalArgumentException("文件保持路径不能为null"); throw new IllegalArgumentException("文件保持路径不能为null");
} }
@ -80,10 +78,20 @@ public class AMTarget {
return this; return this;
} }
/**
* 设置请求类型
*
* @param requestEnum {@link RequestEnum}
*/
public DownloadTarget setRequestMode(RequestEnum requestEnum) {
taskEntity.requestEnum = requestEnum;
return this;
}
/** /**
* 设置文件名 * 设置文件名
*/ */
public AMTarget setDownloadName(@NonNull String downloadName) { public DownloadTarget setDownloadName(@NonNull String downloadName) {
if (TextUtils.isEmpty(downloadName)) { if (TextUtils.isEmpty(downloadName)) {
throw new IllegalArgumentException("文件名不能为null"); throw new IllegalArgumentException("文件名不能为null");
} }
@ -122,7 +130,7 @@ public class AMTarget {
* 添加任务 * 添加任务
*/ */
public void add() { public void add() {
DownloadManager.getInstance() AriaManager.getInstance(AriaManager.APP)
.setCmd(CommonUtil.createDownloadCmd(targetName, taskEntity, CmdFactory.TASK_CREATE)) .setCmd(CommonUtil.createDownloadCmd(targetName, taskEntity, CmdFactory.TASK_CREATE))
.exe(); .exe();
} }
@ -134,7 +142,7 @@ public class AMTarget {
List<IDownloadCmd> cmds = new ArrayList<>(); List<IDownloadCmd> cmds = new ArrayList<>();
cmds.add(CommonUtil.createDownloadCmd(targetName, taskEntity, CmdFactory.TASK_CREATE)); cmds.add(CommonUtil.createDownloadCmd(targetName, taskEntity, CmdFactory.TASK_CREATE));
cmds.add(CommonUtil.createDownloadCmd(targetName, taskEntity, CmdFactory.TASK_START)); cmds.add(CommonUtil.createDownloadCmd(targetName, taskEntity, CmdFactory.TASK_START));
DownloadManager.getInstance().setCmds(cmds).exe(); AriaManager.getInstance(AriaManager.APP).setCmds(cmds).exe();
cmds.clear(); cmds.clear();
} }
@ -142,7 +150,7 @@ public class AMTarget {
* 停止下载 * 停止下载
*/ */
public void stop() { public void stop() {
DownloadManager.getInstance() AriaManager.getInstance(AriaManager.APP)
.setCmd(CommonUtil.createDownloadCmd(targetName, taskEntity, CmdFactory.TASK_STOP)) .setCmd(CommonUtil.createDownloadCmd(targetName, taskEntity, CmdFactory.TASK_STOP))
.exe(); .exe();
} }
@ -151,7 +159,7 @@ public class AMTarget {
* 恢复下载 * 恢复下载
*/ */
public void resume() { public void resume() {
DownloadManager.getInstance() AriaManager.getInstance(AriaManager.APP)
.setCmd(CommonUtil.createDownloadCmd(targetName, taskEntity, CmdFactory.TASK_START)) .setCmd(CommonUtil.createDownloadCmd(targetName, taskEntity, CmdFactory.TASK_START))
.exe(); .exe();
} }
@ -160,7 +168,7 @@ public class AMTarget {
* 取消下载 * 取消下载
*/ */
public void cancel() { public void cancel() {
DownloadManager.getInstance() AriaManager.getInstance(AriaManager.APP)
.setCmd(CommonUtil.createDownloadCmd(targetName, taskEntity, CmdFactory.TASK_CANCEL)) .setCmd(CommonUtil.createDownloadCmd(targetName, taskEntity, CmdFactory.TASK_CANCEL))
.exe(); .exe();
} }
@ -169,7 +177,7 @@ public class AMTarget {
* 是否在下载 * 是否在下载
*/ */
public boolean isDownloading() { public boolean isDownloading() {
return DownloadManager.getInstance().getTaskQueue().getTask(entity).isDownloading(); return AriaManager.getInstance(AriaManager.APP).getTaskQueue().getTask(entity).isDownloading();
} }
/** /**

View File

@ -1,3 +1,18 @@
/*
* Copyright (C) 2016 AriaLyy(https://github.com/AriaLyy/Aria)
*
* 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.aria.core; package com.arialyy.aria.core;
import java.util.HashMap; import java.util.HashMap;

View File

@ -13,12 +13,19 @@
* See the License for the specific language governing permissions and * See the License for the specific language governing permissions and
* limitations under the License. * limitations under the License.
*/ */
package com.arialyy.aria.core.receiver; package com.arialyy.aria.core;
/** /**
* Created by Aria.Lao on 2017/2/6. * Created by Aria.Lao on 2017/2/6.
*/ */
interface IReceiver {
/**
* Receiver 销毁
*/
public void destroy();
public interface IReceiver { /**
* 移除事件回调
*/
public void removeSchedulerListener();
} }

View File

@ -1,9 +1,24 @@
/*
* Copyright (C) 2016 AriaLyy(https://github.com/AriaLyy/Aria)
*
* 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.aria.core; package com.arialyy.aria.core;
/** /**
* Created by Aria.Lao on 2017/1/23. * Created by Aria.Lao on 2017/1/23.
* url请求方式目前支持GET、POST
*/ */
public enum RequestEnum { public enum RequestEnum {
GET("GET"), POST("POST"); GET("GET"), POST("POST");

View File

@ -13,12 +13,19 @@
* See the License for the specific language governing permissions and * See the License for the specific language governing permissions and
* limitations under the License. * limitations under the License.
*/ */
package com.arialyy.aria.core.receiver; package com.arialyy.aria.core;
/** /**
* Created by Aria.Lao on 2017/2/6. * Created by Aria.Lao on 2017/2/6.
* 上传功能接收器
*/ */
public class UploadReceiver implements IReceiver { public class UploadReceiver implements IReceiver {
@Override public void destroy() {
}
@Override public void removeSchedulerListener() {
}
} }

View File

@ -0,0 +1,111 @@
/*
* Copyright (C) 2016 AriaLyy(https://github.com/AriaLyy/Aria)
*
* 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.aria.core;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Message;
import android.util.Log;
import android.widget.PopupWindow;
import com.arialyy.aria.util.CommonUtil;
import java.lang.reflect.Field;
/**
* Created by Aria.Lao on 2017/2/7.
* 为组件添加生命周期
*/
final class WidgetLiftManager {
private final String TAG = "WidgetLiftManager";
/**
* 处理悬浮框取消或dismiss事件
*/
void handlePopupWindowLift(PopupWindow popupWindow) {
try {
Field dismissField = CommonUtil.getField(popupWindow.getClass(), "mOnDismissListener");
PopupWindow.OnDismissListener listener =
(PopupWindow.OnDismissListener) dismissField.get(popupWindow);
if (listener != null) {
Log.e(TAG, "你已经对PopupWindow设置了Dismiss事件。为了防止内存泄露"
+ "请在dismiss方法中调用Aria.download(this).removeSchedulerListener();来注销事件");
} else {
popupWindow.setOnDismissListener(createPopupWindowListener(popupWindow));
}
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
/**
* 创建popupWindow dismiss事件
*/
private PopupWindow.OnDismissListener createPopupWindowListener(final PopupWindow popupWindow) {
return new PopupWindow.OnDismissListener() {
@Override public void onDismiss() {
AriaManager.getInstance(AriaManager.APP).destroySchedulerListener(popupWindow);
}
};
}
/**
* 处理对话框取消或dismiss
*/
void handleDialogLift(Dialog dialog) {
try {
Field dismissField = CommonUtil.getField(dialog.getClass(), "mDismissMessage");
Message dismissMsg = (Message) dismissField.get(dialog);
//如果Dialog已经设置Dismiss事件则查找cancel事件
if (dismissMsg != null) {
Field cancelField = CommonUtil.getField(dialog.getClass(), "mCancelMessage");
Message cancelMsg = (Message) cancelField.get(dialog);
if (cancelMsg != null) {
Log.e(TAG, "你已经对Dialog设置了Dismiss和cancel事件。为了防止内存泄露"
+ "请在dismiss方法中调用Aria.download(this).removeSchedulerListener();来注销事件");
} else {
dialog.setOnCancelListener(createCancelListener());
}
} else {
dialog.setOnDismissListener(createDismissListener());
}
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
/**
* 创建Dialog取消事件
*/
private Dialog.OnCancelListener createCancelListener() {
return new Dialog.OnCancelListener() {
@Override public void onCancel(DialogInterface dialog) {
AriaManager.getInstance(AriaManager.APP).destroySchedulerListener(dialog);
}
};
}
/**
* 创建Dialog dismiss取消事件
*/
private Dialog.OnDismissListener createDismissListener() {
return new Dialog.OnDismissListener() {
@Override public void onDismiss(DialogInterface dialog) {
AriaManager.getInstance(AriaManager.APP).destroySchedulerListener(dialog);
}
};
}
}

View File

@ -16,12 +16,11 @@
package com.arialyy.aria.core.command.download; package com.arialyy.aria.core.command.download;
import com.arialyy.aria.core.DownloadManager; import com.arialyy.aria.core.AriaManager;
import com.arialyy.aria.core.DownloadTaskEntity; import com.arialyy.aria.core.DownloadTaskEntity;
import com.arialyy.aria.core.queue.ITaskQueue; import com.arialyy.aria.core.queue.ITaskQueue;
import com.arialyy.aria.util.CheckUtil; import com.arialyy.aria.util.CheckUtil;
import com.arialyy.aria.util.CommonUtil; import com.arialyy.aria.util.CommonUtil;
import com.arialyy.aria.core.DownloadEntity;
/** /**
* Created by lyy on 2016/8/22. * Created by lyy on 2016/8/22.
@ -50,7 +49,7 @@ public abstract class IDownloadCmd {
mTargetName = targetName; mTargetName = targetName;
mEntity = entity; mEntity = entity;
TAG = CommonUtil.getClassName(this); TAG = CommonUtil.getClassName(this);
mQueue = DownloadManager.getInstance().getTaskQueue(); mQueue = AriaManager.getInstance(AriaManager.APP).getTaskQueue();
} }
/** /**

View File

@ -1,77 +0,0 @@
/*
* Copyright (C) 2016 AriaLyy(https://github.com/AriaLyy/Aria)
*
* 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.aria.core.receiver;
import android.support.annotation.NonNull;
import com.arialyy.aria.core.AMTarget;
import com.arialyy.aria.core.DownloadEntity;
import com.arialyy.aria.core.scheduler.DownloadSchedulers;
import com.arialyy.aria.core.scheduler.OnSchedulerListener;
import com.arialyy.aria.util.CheckUtil;
/**
* Created by lyy on 2016/12/5.
* AM 接收器
*/
public class DownloadReceiver {
public String targetName;
public OnSchedulerListener listener;
/**
* {@link #load(String)},请使用该方法
*/
@Deprecated public AMTarget load(DownloadEntity entity) {
return new AMTarget(entity, targetName);
}
/**
* 读取下载链接
*/
public AMTarget load(@NonNull String downloadUrl) {
CheckUtil.checkDownloadUrl(downloadUrl);
DownloadEntity entity =
DownloadEntity.findData(DownloadEntity.class, "downloadUrl=?", downloadUrl);
if (entity == null) {
entity = new DownloadEntity();
}
entity.setDownloadUrl(downloadUrl);
return new AMTarget(entity, targetName);
}
/**
* 添加调度器回调
*/
public DownloadReceiver addSchedulerListener(OnSchedulerListener listener) {
this.listener = listener;
DownloadSchedulers.getInstance().addSchedulerListener(targetName, listener);
return this;
}
/**
* 移除回调
*/
public DownloadReceiver removeSchedulerListener() {
if (listener != null) {
DownloadSchedulers.getInstance().removeSchedulerListener(targetName, listener);
}
return this;
}
public void destroy() {
targetName = null;
listener = null;
}
}

View File

@ -18,9 +18,8 @@ package com.arialyy.aria.core.scheduler;
import android.os.CountDownTimer; import android.os.CountDownTimer;
import android.os.Message; import android.os.Message;
import android.text.TextUtils;
import android.util.Log; import android.util.Log;
import com.arialyy.aria.core.DownloadManager; import com.arialyy.aria.core.AriaManager;
import com.arialyy.aria.core.queue.ITaskQueue; import com.arialyy.aria.core.queue.ITaskQueue;
import com.arialyy.aria.core.DownloadEntity; import com.arialyy.aria.core.DownloadEntity;
import com.arialyy.aria.core.task.Task; import com.arialyy.aria.core.task.Task;
@ -75,11 +74,10 @@ public class DownloadSchedulers implements IDownloadSchedulers {
* 下载器任务监听 * 下载器任务监听
*/ */
Map<String, OnSchedulerListener> mSchedulerListeners = new ConcurrentHashMap<>(); Map<String, OnSchedulerListener> mSchedulerListeners = new ConcurrentHashMap<>();
DownloadManager mManager = DownloadManager.getInstance();
ITaskQueue mQueue; ITaskQueue mQueue;
private DownloadSchedulers() { private DownloadSchedulers() {
mQueue = mManager.getTaskQueue(); mQueue = AriaManager.getInstance(AriaManager.APP).getTaskQueue();
} }
public static DownloadSchedulers getInstance() { public static DownloadSchedulers getInstance() {

View File

@ -16,7 +16,7 @@
package com.arialyy.aria.util; package com.arialyy.aria.util;
import android.util.Log; import android.util.Log;
import com.arialyy.aria.core.DownloadManager; import com.arialyy.aria.core.AriaManager;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.util.Map; import java.util.Map;
@ -67,7 +67,7 @@ public class Configuration {
} }
private Configuration() { private Configuration() {
mConfigFile = new File(DownloadManager.APP.getFilesDir().getPath() + CONFIG_FILE); mConfigFile = new File(AriaManager.APP.getFilesDir().getPath() + CONFIG_FILE);
try { try {
if (!mConfigFile.exists()) { if (!mConfigFile.exists()) {
mConfigFile.getParentFile().mkdirs(); mConfigFile.getParentFile().mkdirs();

View File

@ -16,10 +16,7 @@
package com.arialyy.aria.util; package com.arialyy.aria.util;
import android.text.TextUtils; import android.text.TextUtils;
import com.arialyy.aria.core.DownloadManager; import com.arialyy.aria.core.AriaManager;
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.security.KeyManagementException; import java.security.KeyManagementException;
@ -42,8 +39,8 @@ import javax.net.ssl.X509TrustManager;
/** /**
* Created by Aria.Lao on 2017/1/11. * Created by Aria.Lao on 2017/1/11.
* SSL证书工具
*/ */
public class SSLContextUtil { public class SSLContextUtil {
/** /**
@ -61,7 +58,7 @@ public class SSLContextUtil {
CertificateFactory cf = null; CertificateFactory cf = null;
try { try {
cf = CertificateFactory.getInstance("X.509"); cf = CertificateFactory.getInstance("X.509");
InputStream caInput = DownloadManager.APP.getAssets().open(caPath); InputStream caInput = AriaManager.APP.getAssets().open(caPath);
Certificate ca; Certificate ca;
ca = cf.generateCertificate(caInput); ca = cf.generateCertificate(caInput);
System.out.println("ca=" + ((X509Certificate) ca).getSubjectDN()); System.out.println("ca=" + ((X509Certificate) ca).getSubjectDN());

View File

@ -18,7 +18,6 @@
package com.arialyy.simple.base; package com.arialyy.simple.base;
import android.app.Application; import android.app.Application;
import com.arialyy.aria.core.DownloadManager;
import com.arialyy.frame.core.AbsFrame; import com.arialyy.frame.core.AbsFrame;
/** /**
@ -28,6 +27,5 @@ public class BaseApplication extends Application {
@Override public void onCreate() { @Override public void onCreate() {
super.onCreate(); super.onCreate();
AbsFrame.init(this); AbsFrame.init(this);
//DownloadManager.init(this);
} }
} }

View File

@ -7,7 +7,7 @@ import android.widget.Button;
import android.widget.TextView; import android.widget.TextView;
import butterknife.Bind; import butterknife.Bind;
import butterknife.OnClick; import butterknife.OnClick;
import com.arialyy.aria.core.AMTarget; import com.arialyy.aria.core.DownloadTarget;
import com.arialyy.aria.core.Aria; import com.arialyy.aria.core.Aria;
import com.arialyy.aria.core.DownloadEntity; import com.arialyy.aria.core.DownloadEntity;
import com.arialyy.aria.core.task.Task; import com.arialyy.aria.core.task.Task;
@ -40,13 +40,13 @@ public class DownloadDialog extends AbsDialog {
} }
private void init() { private void init() {
if (Aria.get(this).taskExists(DOWNLOAD_URL)) { if (Aria.download(this).taskExists(DOWNLOAD_URL)) {
AMTarget target = Aria.download(this).load(DOWNLOAD_URL); DownloadTarget target = Aria.download(this).load(DOWNLOAD_URL);
int p = (int) (target.getCurrentProgress() * 100 / target.getFileSize()); int p = (int) (target.getCurrentProgress() * 100 / target.getFileSize());
mPb.setProgress(p); mPb.setProgress(p);
} }
Aria.download(this).addSchedulerListener(new MyDialogDownloadCallback()); Aria.download(this).addSchedulerListener(new MyDialogDownloadCallback());
DownloadEntity entity = Aria.get(this).getDownloadEntity(DOWNLOAD_URL); DownloadEntity entity = Aria.download(this).getDownloadEntity(DOWNLOAD_URL);
if (entity != null) { if (entity != null) {
mSize.setText(CommonUtil.formatFileSize(entity.getFileSize())); mSize.setText(CommonUtil.formatFileSize(entity.getFileSize()));
int state = entity.getState(); int state = entity.getState();

View File

@ -7,7 +7,7 @@ import android.widget.Button;
import android.widget.TextView; import android.widget.TextView;
import butterknife.Bind; import butterknife.Bind;
import butterknife.OnClick; import butterknife.OnClick;
import com.arialyy.aria.core.AMTarget; import com.arialyy.aria.core.DownloadTarget;
import com.arialyy.aria.core.Aria; import com.arialyy.aria.core.Aria;
import com.arialyy.aria.core.DownloadEntity; import com.arialyy.aria.core.DownloadEntity;
import com.arialyy.aria.core.task.Task; import com.arialyy.aria.core.task.Task;
@ -32,12 +32,12 @@ public class DownloadFragment extends AbsFragment<FragmentDownloadBinding> {
"http://static.gaoshouyou.com/d/3a/93/573ae1db9493a801c24bf66128b11e39.apk"; "http://static.gaoshouyou.com/d/3a/93/573ae1db9493a801c24bf66128b11e39.apk";
@Override protected void init(Bundle savedInstanceState) { @Override protected void init(Bundle savedInstanceState) {
if (Aria.get(this).taskExists(DOWNLOAD_URL)) { if (Aria.download(this).taskExists(DOWNLOAD_URL)) {
AMTarget target = Aria.download(this).load(DOWNLOAD_URL); DownloadTarget target = Aria.download(this).load(DOWNLOAD_URL);
int p = (int) (target.getCurrentProgress() * 100 / target.getFileSize()); int p = (int) (target.getCurrentProgress() * 100 / target.getFileSize());
mPb.setProgress(p); mPb.setProgress(p);
} }
DownloadEntity entity = Aria.get(this).getDownloadEntity(DOWNLOAD_URL); DownloadEntity entity = Aria.download(this).getDownloadEntity(DOWNLOAD_URL);
if (entity != null) { if (entity != null) {
mSize.setText(CommonUtil.formatFileSize(entity.getFileSize())); mSize.setText(CommonUtil.formatFileSize(entity.getFileSize()));
int state = entity.getState(); int state = entity.getState();

View File

@ -86,7 +86,7 @@ public class DownloadModule extends BaseModule {
String[] urls = getContext().getResources().getStringArray(R.array.test_apk_download_url); String[] urls = getContext().getResources().getStringArray(R.array.test_apk_download_url);
List<DownloadEntity> list = new ArrayList<>(); List<DownloadEntity> list = new ArrayList<>();
for (String url : urls) { for (String url : urls) {
DownloadEntity entity = Aria.get(getContext()).getDownloadEntity(url); DownloadEntity entity = Aria.download(getContext()).getDownloadEntity(url);
if (entity == null) { if (entity == null) {
entity = createDownloadEntity(url); entity = createDownloadEntity(url);
} }

View File

@ -25,7 +25,7 @@ public class DownloadActivity extends BaseActivity<ActivityDownloadBinding> {
@Override protected void init(Bundle savedInstanceState) { @Override protected void init(Bundle savedInstanceState) {
super.init(savedInstanceState); super.init(savedInstanceState);
mAdapter = new DownloadAdapter(this, Aria.get(this).getDownloadList()); mAdapter = new DownloadAdapter(this, Aria.download(this).getDownloadList());
mList.setLayoutManager(new LinearLayoutManager(this)); mList.setLayoutManager(new LinearLayoutManager(this));
mList.setAdapter(mAdapter); mList.setAdapter(mAdapter);
} }

View File

@ -62,7 +62,7 @@ public class MultiTaskActivity extends BaseActivity<ActivityMultiBinding> {
dialog.show(getSupportFragmentManager(), "download_num"); dialog.show(getSupportFragmentManager(), "download_num");
break; break;
case R.id.stop_all: case R.id.stop_all:
Aria.get(this).stopAllTask(); Aria.download(this).stopAllTask();
break; break;
case R.id.turn: case R.id.turn:
startActivity(new Intent(this, DownloadActivity.class)); startActivity(new Intent(this, DownloadActivity.class));

View File

@ -9,7 +9,7 @@ import android.widget.Button;
import android.widget.TextView; import android.widget.TextView;
import butterknife.Bind; import butterknife.Bind;
import butterknife.OnClick; import butterknife.OnClick;
import com.arialyy.aria.core.AMTarget; import com.arialyy.aria.core.DownloadTarget;
import com.arialyy.aria.core.Aria; import com.arialyy.aria.core.Aria;
import com.arialyy.aria.core.DownloadEntity; import com.arialyy.aria.core.DownloadEntity;
import com.arialyy.aria.core.task.Task; import com.arialyy.aria.core.task.Task;
@ -42,13 +42,13 @@ public class DownloadPopupWindow extends AbsPopupWindow {
} }
private void initWidget() { private void initWidget() {
if (Aria.get(this).taskExists(DOWNLOAD_URL)) { if (Aria.download(this).taskExists(DOWNLOAD_URL)) {
AMTarget target = Aria.download(this).load(DOWNLOAD_URL); DownloadTarget target = Aria.download(this).load(DOWNLOAD_URL);
int p = (int) (target.getCurrentProgress() * 100 / target.getFileSize()); int p = (int) (target.getCurrentProgress() * 100 / target.getFileSize());
mPb.setProgress(p); mPb.setProgress(p);
} }
Aria.download(this).addSchedulerListener(new MyDialogDownloadCallback()); Aria.download(this).addSchedulerListener(new MyDialogDownloadCallback());
DownloadEntity entity = Aria.get(this).getDownloadEntity(DOWNLOAD_URL); DownloadEntity entity = Aria.download(this).getDownloadEntity(DOWNLOAD_URL);
if (entity != null) { if (entity != null) {
mSize.setText(CommonUtil.formatFileSize(entity.getFileSize())); mSize.setText(CommonUtil.formatFileSize(entity.getFileSize()));
int state = entity.getState(); int state = entity.getState();

View File

@ -30,7 +30,7 @@ import android.widget.ImageView;
import android.widget.TextView; import android.widget.TextView;
import android.widget.Toast; import android.widget.Toast;
import butterknife.Bind; import butterknife.Bind;
import com.arialyy.aria.core.AMTarget; import com.arialyy.aria.core.DownloadTarget;
import com.arialyy.aria.core.Aria; import com.arialyy.aria.core.Aria;
import com.arialyy.aria.core.DownloadEntity; import com.arialyy.aria.core.DownloadEntity;
import com.arialyy.aria.core.task.Task; import com.arialyy.aria.core.task.Task;
@ -161,8 +161,8 @@ public class SingleTaskActivity extends BaseActivity<ActivitySingleBinding> {
} }
private void init() { private void init() {
if (Aria.get(this).taskExists(DOWNLOAD_URL)) { if (Aria.download(this).taskExists(DOWNLOAD_URL)) {
AMTarget target = Aria.download(this).load(DOWNLOAD_URL); DownloadTarget target = Aria.download(this).load(DOWNLOAD_URL);
int p = (int) (target.getCurrentProgress() * 100 / target.getFileSize()); int p = (int) (target.getCurrentProgress() * 100 / target.getFileSize());
mPb.setProgress(p); mPb.setProgress(p);
} }