upload,代码重构
This commit is contained in:
2
.idea/misc.xml
generated
2
.idea/misc.xml
generated
@ -37,7 +37,7 @@
|
|||||||
<ConfirmationsSetting value="0" id="Add" />
|
<ConfirmationsSetting value="0" id="Add" />
|
||||||
<ConfirmationsSetting value="0" id="Remove" />
|
<ConfirmationsSetting value="0" id="Remove" />
|
||||||
</component>
|
</component>
|
||||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" assert-keyword="true" jdk-15="true" project-jdk-name="1.8" project-jdk-type="JavaSDK">
|
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_7" default="true" assert-keyword="true" jdk-15="true" project-jdk-name="1.8" project-jdk-type="JavaSDK">
|
||||||
<output url="file://$PROJECT_DIR$/build/classes" />
|
<output url="file://$PROJECT_DIR$/build/classes" />
|
||||||
</component>
|
</component>
|
||||||
<component name="ProjectType">
|
<component name="ProjectType">
|
||||||
|
@ -26,8 +26,9 @@ 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.scheduler.OnSchedulerListener;
|
import com.arialyy.aria.core.download.DownloadReceiver;
|
||||||
import com.arialyy.aria.core.task.Task;
|
import com.arialyy.aria.core.download.scheduler.OnSchedulerListener;
|
||||||
|
import com.arialyy.aria.core.download.task.DownloadTask;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by lyy on 2016/12/1.
|
* Created by lyy on 2016/12/1.
|
||||||
@ -143,35 +144,35 @@ import com.arialyy.aria.core.task.Task;
|
|||||||
|
|
||||||
public static class SimpleSchedulerListener implements OnSchedulerListener {
|
public static class SimpleSchedulerListener implements OnSchedulerListener {
|
||||||
|
|
||||||
@Override public void onTaskPre(Task task) {
|
@Override public void onTaskPre(DownloadTask task) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public void onTaskResume(Task task) {
|
@Override public void onTaskResume(DownloadTask task) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public void onTaskStart(Task task) {
|
@Override public void onTaskStart(DownloadTask task) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public void onTaskStop(Task task) {
|
@Override public void onTaskStop(DownloadTask task) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public void onTaskCancel(Task task) {
|
@Override public void onTaskCancel(DownloadTask task) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public void onTaskFail(Task task) {
|
@Override public void onTaskFail(DownloadTask task) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public void onTaskComplete(Task task) {
|
@Override public void onTaskComplete(DownloadTask task) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public void onTaskRunning(Task task) {
|
@Override public void onTaskRunning(DownloadTask task) {
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -27,9 +27,14 @@ 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.IDownloadCmd;
|
import com.arialyy.aria.core.download.command.IDownloadCmd;
|
||||||
import com.arialyy.aria.core.queue.DownloadTaskQueue;
|
import com.arialyy.aria.core.download.DownloadEntity;
|
||||||
import com.arialyy.aria.core.queue.ITaskQueue;
|
import com.arialyy.aria.core.download.DownloadReceiver;
|
||||||
|
import com.arialyy.aria.core.inf.ICmd;
|
||||||
|
import com.arialyy.aria.core.inf.IReceiver;
|
||||||
|
import com.arialyy.aria.core.download.queue.DownloadTaskQueue;
|
||||||
|
import com.arialyy.aria.core.download.queue.ITaskQueue;
|
||||||
|
import com.arialyy.aria.core.upload.UploadReceiver;
|
||||||
import com.arialyy.aria.orm.DbEntity;
|
import com.arialyy.aria.orm.DbEntity;
|
||||||
import com.arialyy.aria.orm.DbUtil;
|
import com.arialyy.aria.orm.DbUtil;
|
||||||
import com.arialyy.aria.util.CAConfiguration;
|
import com.arialyy.aria.util.CAConfiguration;
|
||||||
@ -56,7 +61,7 @@ import java.util.Map;
|
|||||||
|
|
||||||
public static Context APP;
|
public static Context APP;
|
||||||
private ITaskQueue mTaskQueue;
|
private ITaskQueue mTaskQueue;
|
||||||
private List<IDownloadCmd> mCommands = new ArrayList<>();
|
private List<ICmd> mCommands = new ArrayList<>();
|
||||||
|
|
||||||
private AriaManager(Context context) {
|
private AriaManager(Context context) {
|
||||||
DbUtil.init(context.getApplicationContext());
|
DbUtil.init(context.getApplicationContext());
|
||||||
@ -75,7 +80,11 @@ import java.util.Map;
|
|||||||
return INSTANCE;
|
return INSTANCE;
|
||||||
}
|
}
|
||||||
|
|
||||||
List<DownloadEntity> getAllDownloadEntity() {
|
public Map<String, IReceiver> getReceiver(){
|
||||||
|
return mReceivers;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<DownloadEntity> getAllDownloadEntity() {
|
||||||
return DbEntity.findAllData(DownloadEntity.class);
|
return DbEntity.findAllData(DownloadEntity.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -89,7 +98,7 @@ import java.util.Map;
|
|||||||
/**
|
/**
|
||||||
* 设置命令
|
* 设置命令
|
||||||
*/
|
*/
|
||||||
AriaManager setCmd(IDownloadCmd command) {
|
public AriaManager setCmd(ICmd command) {
|
||||||
mCommands.add(command);
|
mCommands.add(command);
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
@ -97,7 +106,7 @@ import java.util.Map;
|
|||||||
/**
|
/**
|
||||||
* 设置一组命令
|
* 设置一组命令
|
||||||
*/
|
*/
|
||||||
AriaManager setCmds(List<IDownloadCmd> commands) {
|
public <T extends ICmd> AriaManager setCmds(List<T> commands) {
|
||||||
if (commands != null && commands.size() > 0) {
|
if (commands != null && commands.size() > 0) {
|
||||||
mCommands.addAll(commands);
|
mCommands.addAll(commands);
|
||||||
}
|
}
|
||||||
@ -107,8 +116,8 @@ import java.util.Map;
|
|||||||
/**
|
/**
|
||||||
* 执行所有设置的命令
|
* 执行所有设置的命令
|
||||||
*/
|
*/
|
||||||
synchronized void exe() {
|
public synchronized void exe() {
|
||||||
for (IDownloadCmd command : mCommands) {
|
for (ICmd command : mCommands) {
|
||||||
command.executeCmd();
|
command.executeCmd();
|
||||||
}
|
}
|
||||||
mCommands.clear();
|
mCommands.clear();
|
||||||
|
@ -15,7 +15,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
package com.arialyy.aria.core;
|
package com.arialyy.aria.core.download;
|
||||||
|
|
||||||
import android.os.Parcel;
|
import android.os.Parcel;
|
||||||
import android.os.Parcelable;
|
import android.os.Parcelable;
|
@ -13,13 +13,15 @@
|
|||||||
* 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;
|
package com.arialyy.aria.core.download;
|
||||||
|
|
||||||
import android.support.annotation.NonNull;
|
import android.support.annotation.NonNull;
|
||||||
import com.arialyy.aria.core.command.download.CmdFactory;
|
import com.arialyy.aria.core.AriaManager;
|
||||||
import com.arialyy.aria.core.command.download.IDownloadCmd;
|
import com.arialyy.aria.core.inf.IReceiver;
|
||||||
import com.arialyy.aria.core.scheduler.DownloadSchedulers;
|
import com.arialyy.aria.core.download.command.CmdFactory;
|
||||||
import com.arialyy.aria.core.scheduler.OnSchedulerListener;
|
import com.arialyy.aria.core.download.command.IDownloadCmd;
|
||||||
|
import com.arialyy.aria.core.download.scheduler.DownloadSchedulers;
|
||||||
|
import com.arialyy.aria.core.download.scheduler.OnSchedulerListener;
|
||||||
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;
|
||||||
@ -131,11 +133,11 @@ public class DownloadReceiver implements IReceiver{
|
|||||||
CommonUtil.createDownloadCmd(new DownloadTaskEntity(entity), CmdFactory.TASK_CANCEL));
|
CommonUtil.createDownloadCmd(new DownloadTaskEntity(entity), CmdFactory.TASK_CANCEL));
|
||||||
}
|
}
|
||||||
ariaManager.setCmds(cancelCmds).exe();
|
ariaManager.setCmds(cancelCmds).exe();
|
||||||
Set<String> keys = ariaManager.mReceivers.keySet();
|
Set<String> keys = ariaManager.getReceiver().keySet();
|
||||||
for (String key : keys) {
|
for (String key : keys) {
|
||||||
IReceiver receiver = ariaManager.mReceivers.get(key);
|
IReceiver receiver = ariaManager.getReceiver().get(key);
|
||||||
receiver.removeSchedulerListener();
|
receiver.removeSchedulerListener();
|
||||||
ariaManager.mReceivers.remove(key);
|
ariaManager.getReceiver().remove(key);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -13,12 +13,14 @@
|
|||||||
* 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;
|
package com.arialyy.aria.core.download;
|
||||||
|
|
||||||
import android.support.annotation.NonNull;
|
import android.support.annotation.NonNull;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
import com.arialyy.aria.core.command.download.CmdFactory;
|
import com.arialyy.aria.core.AriaManager;
|
||||||
import com.arialyy.aria.core.command.download.IDownloadCmd;
|
import com.arialyy.aria.core.RequestEnum;
|
||||||
|
import com.arialyy.aria.core.download.command.CmdFactory;
|
||||||
|
import com.arialyy.aria.core.download.command.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;
|
@ -13,8 +13,9 @@
|
|||||||
* 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;
|
package com.arialyy.aria.core.download;
|
||||||
|
|
||||||
|
import com.arialyy.aria.core.RequestEnum;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
@ -14,12 +14,11 @@
|
|||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package com.arialyy.aria.core.command.download;
|
package com.arialyy.aria.core.download.command;
|
||||||
|
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import com.arialyy.aria.core.DownloadEntity;
|
import com.arialyy.aria.core.download.DownloadTaskEntity;
|
||||||
import com.arialyy.aria.core.DownloadTaskEntity;
|
import com.arialyy.aria.core.download.task.DownloadTask;
|
||||||
import com.arialyy.aria.core.task.Task;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by lyy on 2016/8/22.
|
* Created by lyy on 2016/8/22.
|
||||||
@ -36,7 +35,7 @@ class AddCmd extends IDownloadCmd {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override public void executeCmd() {
|
@Override public void executeCmd() {
|
||||||
Task task = mQueue.getTask(mEntity.downloadEntity);
|
DownloadTask task = mQueue.getTask(mEntity.downloadEntity);
|
||||||
if (task == null) {
|
if (task == null) {
|
||||||
mQueue.createTask(mTargetName, mEntity);
|
mQueue.createTask(mTargetName, mEntity);
|
||||||
} else {
|
} else {
|
@ -14,11 +14,10 @@
|
|||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package com.arialyy.aria.core.command.download;
|
package com.arialyy.aria.core.download.command;
|
||||||
|
|
||||||
import com.arialyy.aria.core.DownloadEntity;
|
import com.arialyy.aria.core.download.DownloadTaskEntity;
|
||||||
import com.arialyy.aria.core.DownloadTaskEntity;
|
import com.arialyy.aria.core.download.task.DownloadTask;
|
||||||
import com.arialyy.aria.core.task.Task;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by lyy on 2016/9/20.
|
* Created by lyy on 2016/9/20.
|
||||||
@ -35,7 +34,7 @@ class CancelCmd extends IDownloadCmd {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override public void executeCmd() {
|
@Override public void executeCmd() {
|
||||||
Task task = mQueue.getTask(mEntity.downloadEntity);
|
DownloadTask task = mQueue.getTask(mEntity.downloadEntity);
|
||||||
if (task == null) {
|
if (task == null) {
|
||||||
task = mQueue.createTask(mTargetName, mEntity);
|
task = mQueue.createTask(mTargetName, mEntity);
|
||||||
}
|
}
|
@ -14,10 +14,9 @@
|
|||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package com.arialyy.aria.core.command.download;
|
package com.arialyy.aria.core.download.command;
|
||||||
|
|
||||||
import com.arialyy.aria.core.DownloadEntity;
|
import com.arialyy.aria.core.download.DownloadTaskEntity;
|
||||||
import com.arialyy.aria.core.DownloadTaskEntity;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by Lyy on 2016/9/23.
|
* Created by Lyy on 2016/9/23.
|
@ -14,11 +14,12 @@
|
|||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package com.arialyy.aria.core.command.download;
|
package com.arialyy.aria.core.download.command;
|
||||||
|
|
||||||
import com.arialyy.aria.core.AriaManager;
|
import com.arialyy.aria.core.AriaManager;
|
||||||
import com.arialyy.aria.core.DownloadTaskEntity;
|
import com.arialyy.aria.core.download.DownloadTaskEntity;
|
||||||
import com.arialyy.aria.core.queue.ITaskQueue;
|
import com.arialyy.aria.core.download.queue.ITaskQueue;
|
||||||
|
import com.arialyy.aria.core.inf.ICmd;
|
||||||
import com.arialyy.aria.util.CheckUtil;
|
import com.arialyy.aria.util.CheckUtil;
|
||||||
import com.arialyy.aria.util.CommonUtil;
|
import com.arialyy.aria.util.CommonUtil;
|
||||||
|
|
||||||
@ -26,7 +27,7 @@ import com.arialyy.aria.util.CommonUtil;
|
|||||||
* Created by lyy on 2016/8/22.
|
* Created by lyy on 2016/8/22.
|
||||||
* 下载命令
|
* 下载命令
|
||||||
*/
|
*/
|
||||||
public abstract class IDownloadCmd {
|
public abstract class IDownloadCmd implements ICmd{
|
||||||
ITaskQueue mQueue;
|
ITaskQueue mQueue;
|
||||||
DownloadTaskEntity mEntity;
|
DownloadTaskEntity mEntity;
|
||||||
String TAG;
|
String TAG;
|
||||||
@ -43,17 +44,11 @@ public abstract class IDownloadCmd {
|
|||||||
* @param targetName 产生任务的对象名
|
* @param targetName 产生任务的对象名
|
||||||
*/
|
*/
|
||||||
IDownloadCmd(String targetName, DownloadTaskEntity entity) {
|
IDownloadCmd(String targetName, DownloadTaskEntity entity) {
|
||||||
if (!CheckUtil.checkDownloadEntity(entity.downloadEntity)) {
|
CheckUtil.checkDownloadEntity(entity.downloadEntity);
|
||||||
return;
|
|
||||||
}
|
|
||||||
mTargetName = targetName;
|
mTargetName = targetName;
|
||||||
mEntity = entity;
|
mEntity = entity;
|
||||||
TAG = CommonUtil.getClassName(this);
|
TAG = CommonUtil.getClassName(this);
|
||||||
mQueue = AriaManager.getInstance(AriaManager.APP).getTaskQueue();
|
mQueue = AriaManager.getInstance(AriaManager.APP).getTaskQueue();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 执行命令
|
|
||||||
*/
|
|
||||||
public abstract void executeCmd();
|
|
||||||
}
|
}
|
@ -16,8 +16,8 @@
|
|||||||
//package com.arialyy.aria.core.command.download;
|
//package com.arialyy.aria.core.command.download;
|
||||||
//
|
//
|
||||||
//import android.util.Log;
|
//import android.util.Log;
|
||||||
//import com.arialyy.aria.core.DownloadEntity;
|
//import com.arialyy.aria.core.download.DownloadEntity;
|
||||||
//import com.arialyy.aria.core.task.Task;
|
//import com.arialyy.aria.core.task.DownloadTask;
|
||||||
//
|
//
|
||||||
///**
|
///**
|
||||||
// * Created by lyy on 2016/11/30.
|
// * Created by lyy on 2016/11/30.
|
||||||
@ -36,7 +36,7 @@
|
|||||||
// }
|
// }
|
||||||
//
|
//
|
||||||
// @Override public void executeCmd() {
|
// @Override public void executeCmd() {
|
||||||
// Task task = mQueue.getTask(mEntity);
|
// DownloadTask task = mQueue.getTask(mEntity);
|
||||||
// if (task == null) {
|
// if (task == null) {
|
||||||
// task = mQueue.createTask(mTargetName, mEntity);
|
// task = mQueue.createTask(mTargetName, mEntity);
|
||||||
// } else {
|
// } else {
|
@ -14,11 +14,10 @@
|
|||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package com.arialyy.aria.core.command.download;
|
package com.arialyy.aria.core.download.command;
|
||||||
|
|
||||||
import com.arialyy.aria.core.DownloadEntity;
|
import com.arialyy.aria.core.download.DownloadTaskEntity;
|
||||||
import com.arialyy.aria.core.DownloadTaskEntity;
|
import com.arialyy.aria.core.download.task.DownloadTask;
|
||||||
import com.arialyy.aria.core.task.Task;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by lyy on 2016/8/22.
|
* Created by lyy on 2016/8/22.
|
||||||
@ -35,7 +34,7 @@ class StartCmd extends IDownloadCmd {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override public void executeCmd() {
|
@Override public void executeCmd() {
|
||||||
Task task = mQueue.getTask(mEntity.downloadEntity);
|
DownloadTask task = mQueue.getTask(mEntity.downloadEntity);
|
||||||
if (task == null) {
|
if (task == null) {
|
||||||
task = mQueue.createTask(mTargetName, mEntity);
|
task = mQueue.createTask(mTargetName, mEntity);
|
||||||
}
|
}
|
@ -14,13 +14,13 @@
|
|||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package com.arialyy.aria.core.command.download;
|
package com.arialyy.aria.core.download.command;
|
||||||
|
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import com.arialyy.aria.core.DownloadEntity;
|
import com.arialyy.aria.core.download.DownloadEntity;
|
||||||
import com.arialyy.aria.core.DownloadTaskEntity;
|
import com.arialyy.aria.core.download.DownloadTaskEntity;
|
||||||
import com.arialyy.aria.core.task.Task;
|
import com.arialyy.aria.core.download.task.DownloadTask;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by lyy on 2016/9/20.
|
* Created by lyy on 2016/9/20.
|
||||||
@ -37,7 +37,7 @@ class StopCmd extends IDownloadCmd {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override public void executeCmd() {
|
@Override public void executeCmd() {
|
||||||
Task task = mQueue.getTask(mEntity.downloadEntity);
|
DownloadTask task = mQueue.getTask(mEntity.downloadEntity);
|
||||||
if (task == null) {
|
if (task == null) {
|
||||||
if (mEntity.downloadEntity.getState() == DownloadEntity.STATE_DOWNLOAD_ING) {
|
if (mEntity.downloadEntity.getState() == DownloadEntity.STATE_DOWNLOAD_ING) {
|
||||||
task = mQueue.createTask(mTargetName, mEntity);
|
task = mQueue.createTask(mTargetName, mEntity);
|
@ -14,18 +14,18 @@
|
|||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package com.arialyy.aria.core.queue;
|
package com.arialyy.aria.core.download.queue;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import com.arialyy.aria.core.DownloadEntity;
|
import com.arialyy.aria.core.download.DownloadEntity;
|
||||||
import com.arialyy.aria.core.DownloadTaskEntity;
|
import com.arialyy.aria.core.download.DownloadTaskEntity;
|
||||||
import com.arialyy.aria.core.queue.pool.CachePool;
|
import com.arialyy.aria.core.download.queue.pool.CachePool;
|
||||||
import com.arialyy.aria.core.queue.pool.ExecutePool;
|
import com.arialyy.aria.core.download.queue.pool.ExecutePool;
|
||||||
import com.arialyy.aria.core.scheduler.DownloadSchedulers;
|
import com.arialyy.aria.core.download.scheduler.DownloadSchedulers;
|
||||||
import com.arialyy.aria.core.task.Task;
|
import com.arialyy.aria.core.download.task.DownloadTask;
|
||||||
import com.arialyy.aria.core.task.TaskFactory;
|
import com.arialyy.aria.core.download.task.DownloadTaskFactory;
|
||||||
import com.arialyy.aria.util.Configuration;
|
import com.arialyy.aria.util.Configuration;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -79,7 +79,7 @@ public class DownloadTaskQueue implements ITaskQueue {
|
|||||||
return mCachePool.size();
|
return mCachePool.size();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public void startTask(Task task) {
|
@Override public void startTask(DownloadTask task) {
|
||||||
if (mExecutePool.putTask(task)) {
|
if (mExecutePool.putTask(task)) {
|
||||||
mCachePool.removeTask(task);
|
mCachePool.removeTask(task);
|
||||||
task.getDownloadEntity().setFailNum(0);
|
task.getDownloadEntity().setFailNum(0);
|
||||||
@ -87,7 +87,7 @@ public class DownloadTaskQueue implements ITaskQueue {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public void stopTask(Task task) {
|
@Override public void stopTask(DownloadTask task) {
|
||||||
if (!task.isDownloading()) Log.w(TAG, "停止任务失败,【任务已经停止】");
|
if (!task.isDownloading()) Log.w(TAG, "停止任务失败,【任务已经停止】");
|
||||||
if (mExecutePool.removeTask(task)) {
|
if (mExecutePool.removeTask(task)) {
|
||||||
task.stop();
|
task.stop();
|
||||||
@ -97,11 +97,11 @@ public class DownloadTaskQueue implements ITaskQueue {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public void cancelTask(Task task) {
|
@Override public void cancelTask(DownloadTask task) {
|
||||||
task.cancel();
|
task.cancel();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public void reTryStart(Task task) {
|
@Override public void reTryStart(DownloadTask task) {
|
||||||
if (task == null) {
|
if (task == null) {
|
||||||
Log.w(TAG, "重试下载失败,task 为null");
|
Log.w(TAG, "重试下载失败,task 为null");
|
||||||
return;
|
return;
|
||||||
@ -128,7 +128,7 @@ public class DownloadTaskQueue implements ITaskQueue {
|
|||||||
//设置的任务数小于配置任务数
|
//设置的任务数小于配置任务数
|
||||||
if (diff <= -1 && mExecutePool.size() >= size) {
|
if (diff <= -1 && mExecutePool.size() >= size) {
|
||||||
for (int i = 0, len = Math.abs(diff); i < len; i++) {
|
for (int i = 0, len = Math.abs(diff); i < len; i++) {
|
||||||
Task eTask = mExecutePool.pollTask();
|
DownloadTask eTask = mExecutePool.pollTask();
|
||||||
if (eTask != null) {
|
if (eTask != null) {
|
||||||
stopTask(eTask);
|
stopTask(eTask);
|
||||||
}
|
}
|
||||||
@ -137,7 +137,7 @@ public class DownloadTaskQueue implements ITaskQueue {
|
|||||||
mExecutePool.setDownloadNum(downloadNum);
|
mExecutePool.setDownloadNum(downloadNum);
|
||||||
if (diff >= 1) {
|
if (diff >= 1) {
|
||||||
for (int i = 0; i < diff; i++) {
|
for (int i = 0; i < diff; i++) {
|
||||||
Task nextTask = getNextTask();
|
DownloadTask nextTask = getNextTask();
|
||||||
if (nextTask != null
|
if (nextTask != null
|
||||||
&& nextTask.getDownloadEntity().getState() == DownloadEntity.STATE_WAIT) {
|
&& nextTask.getDownloadEntity().getState() == DownloadEntity.STATE_WAIT) {
|
||||||
startTask(nextTask);
|
startTask(nextTask);
|
||||||
@ -146,21 +146,21 @@ public class DownloadTaskQueue implements ITaskQueue {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public Task createTask(String target, DownloadTaskEntity entity) {
|
@Override public DownloadTask createTask(String target, DownloadTaskEntity entity) {
|
||||||
Task task;
|
DownloadTask task;
|
||||||
if (TextUtils.isEmpty(target)) {
|
if (TextUtils.isEmpty(target)) {
|
||||||
task =
|
task =
|
||||||
TaskFactory.getInstance().createTask(mContext, entity, DownloadSchedulers.getInstance());
|
DownloadTaskFactory.getInstance().createTask(mContext, entity, DownloadSchedulers.getInstance());
|
||||||
} else {
|
} else {
|
||||||
task = TaskFactory.getInstance()
|
task = DownloadTaskFactory.getInstance()
|
||||||
.createTask(target, mContext, entity, DownloadSchedulers.getInstance());
|
.createTask(target, mContext, entity, DownloadSchedulers.getInstance());
|
||||||
}
|
}
|
||||||
mCachePool.putTask(task);
|
mCachePool.putTask(task);
|
||||||
return task;
|
return task;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public Task getTask(DownloadEntity entity) {
|
@Override public DownloadTask getTask(DownloadEntity entity) {
|
||||||
Task task = mExecutePool.getTask(entity.getDownloadUrl());
|
DownloadTask task = mExecutePool.getTask(entity.getDownloadUrl());
|
||||||
if (task == null) {
|
if (task == null) {
|
||||||
task = mCachePool.getTask(entity.getDownloadUrl());
|
task = mCachePool.getTask(entity.getDownloadUrl());
|
||||||
}
|
}
|
||||||
@ -168,7 +168,7 @@ public class DownloadTaskQueue implements ITaskQueue {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override public void removeTask(DownloadEntity entity) {
|
@Override public void removeTask(DownloadEntity entity) {
|
||||||
Task task = mExecutePool.getTask(entity.getDownloadUrl());
|
DownloadTask task = mExecutePool.getTask(entity.getDownloadUrl());
|
||||||
if (task != null) {
|
if (task != null) {
|
||||||
Log.d(TAG, "从执行池删除任务,删除" + (mExecutePool.removeTask(task) ? "成功" : "失败"));
|
Log.d(TAG, "从执行池删除任务,删除" + (mExecutePool.removeTask(task) ? "成功" : "失败"));
|
||||||
}
|
}
|
||||||
@ -178,7 +178,7 @@ public class DownloadTaskQueue implements ITaskQueue {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public Task getNextTask() {
|
@Override public DownloadTask getNextTask() {
|
||||||
return mCachePool.pollTask();
|
return mCachePool.pollTask();
|
||||||
}
|
}
|
||||||
|
|
@ -15,9 +15,9 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
package com.arialyy.aria.core.queue;
|
package com.arialyy.aria.core.download.queue;
|
||||||
|
|
||||||
import com.arialyy.aria.core.task.Task;
|
import com.arialyy.aria.core.download.task.DownloadTask;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by lyy on 2016/8/16.
|
* Created by lyy on 2016/8/16.
|
||||||
@ -27,28 +27,28 @@ public interface IDownloader {
|
|||||||
/**
|
/**
|
||||||
* 开始任务
|
* 开始任务
|
||||||
*
|
*
|
||||||
* @param task {@link Task}
|
* @param task {@link DownloadTask}
|
||||||
*/
|
*/
|
||||||
public void startTask(Task task);
|
public void startTask(DownloadTask task);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 停止任务
|
* 停止任务
|
||||||
*
|
*
|
||||||
* @param task {@link Task}
|
* @param task {@link DownloadTask}
|
||||||
*/
|
*/
|
||||||
public void stopTask(Task task);
|
public void stopTask(DownloadTask task);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 取消任务
|
* 取消任务
|
||||||
*
|
*
|
||||||
* @param task {@link Task}
|
* @param task {@link DownloadTask}
|
||||||
*/
|
*/
|
||||||
public void cancelTask(Task task);
|
public void cancelTask(DownloadTask task);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 重试下载
|
* 重试下载
|
||||||
*
|
*
|
||||||
* @param task {@link Task}
|
* @param task {@link DownloadTask}
|
||||||
*/
|
*/
|
||||||
public void reTryStart(Task task);
|
public void reTryStart(DownloadTask task);
|
||||||
}
|
}
|
@ -15,9 +15,9 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
package com.arialyy.aria.core.queue;
|
package com.arialyy.aria.core.download.queue;
|
||||||
|
|
||||||
import com.arialyy.aria.core.task.Task;
|
import com.arialyy.aria.core.download.task.DownloadTask;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by lyy on 2016/8/14.
|
* Created by lyy on 2016/8/14.
|
||||||
@ -27,14 +27,14 @@ public interface IPool {
|
|||||||
/**
|
/**
|
||||||
* 将下载任务添加到任务池中
|
* 将下载任务添加到任务池中
|
||||||
*/
|
*/
|
||||||
public boolean putTask(Task task);
|
public boolean putTask(DownloadTask task);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 按照队列原则取出下载任务
|
* 按照队列原则取出下载任务
|
||||||
*
|
*
|
||||||
* @return 返回null或者下载任务
|
* @return 返回null或者下载任务
|
||||||
*/
|
*/
|
||||||
public Task pollTask();
|
public DownloadTask pollTask();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 通过下载链接获取下载任务,当任务不为空时,队列将删除该下载任务
|
* 通过下载链接获取下载任务,当任务不为空时,队列将删除该下载任务
|
||||||
@ -42,7 +42,7 @@ public interface IPool {
|
|||||||
* @param downloadUrl 下载链接
|
* @param downloadUrl 下载链接
|
||||||
* @return 返回null或者下载任务
|
* @return 返回null或者下载任务
|
||||||
*/
|
*/
|
||||||
public Task getTask(String downloadUrl);
|
public DownloadTask getTask(String downloadUrl);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 删除任务池中的下载任务
|
* 删除任务池中的下载任务
|
||||||
@ -50,7 +50,7 @@ public interface IPool {
|
|||||||
* @param task 下载任务
|
* @param task 下载任务
|
||||||
* @return true:移除成功
|
* @return true:移除成功
|
||||||
*/
|
*/
|
||||||
public boolean removeTask(Task task);
|
public boolean removeTask(DownloadTask task);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 通过下载链接移除下载任务
|
* 通过下载链接移除下载任务
|
@ -14,12 +14,11 @@
|
|||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package com.arialyy.aria.core.queue;
|
package com.arialyy.aria.core.download.queue;
|
||||||
|
|
||||||
import com.arialyy.aria.core.DownloadEntity;
|
import com.arialyy.aria.core.download.DownloadEntity;
|
||||||
import com.arialyy.aria.core.DownloadTaskEntity;
|
import com.arialyy.aria.core.download.DownloadTaskEntity;
|
||||||
import com.arialyy.aria.core.scheduler.IDownloadSchedulers;
|
import com.arialyy.aria.core.download.task.DownloadTask;
|
||||||
import com.arialyy.aria.core.task.Task;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by lyy on 2016/8/16.
|
* Created by lyy on 2016/8/16.
|
||||||
@ -49,17 +48,17 @@ public interface ITaskQueue extends IDownloader {
|
|||||||
*
|
*
|
||||||
* @param entity 下载实体{@link DownloadTaskEntity}
|
* @param entity 下载实体{@link DownloadTaskEntity}
|
||||||
* @param targetName 生成该任务的对象
|
* @param targetName 生成该任务的对象
|
||||||
* @return {@link Task}
|
* @return {@link DownloadTask}
|
||||||
*/
|
*/
|
||||||
public Task createTask(String targetName, DownloadTaskEntity entity);
|
public DownloadTask createTask(String targetName, DownloadTaskEntity entity);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 通过下载链接从缓存池或任务池搜索下载任务,如果缓存池或任务池都没有任务,则创建新任务
|
* 通过下载链接从缓存池或任务池搜索下载任务,如果缓存池或任务池都没有任务,则创建新任务
|
||||||
*
|
*
|
||||||
* @param entity 下载实体{@link DownloadEntity}
|
* @param entity 下载实体{@link DownloadEntity}
|
||||||
* @return {@link Task}
|
* @return {@link DownloadTask}
|
||||||
*/
|
*/
|
||||||
public Task getTask(DownloadEntity entity);
|
public DownloadTask getTask(DownloadEntity entity);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 通过下载链接删除任务
|
* 通过下载链接删除任务
|
||||||
@ -73,5 +72,5 @@ public interface ITaskQueue extends IDownloader {
|
|||||||
*
|
*
|
||||||
* @return 下载任务 or null
|
* @return 下载任务 or null
|
||||||
*/
|
*/
|
||||||
public Task getNextTask();
|
public DownloadTask getNextTask();
|
||||||
}
|
}
|
@ -14,13 +14,13 @@
|
|||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package com.arialyy.aria.core.queue.pool;
|
package com.arialyy.aria.core.download.queue.pool;
|
||||||
|
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import com.arialyy.aria.core.queue.IPool;
|
import com.arialyy.aria.core.download.queue.IPool;
|
||||||
|
import com.arialyy.aria.core.download.task.DownloadTask;
|
||||||
import com.arialyy.aria.util.CommonUtil;
|
import com.arialyy.aria.util.CommonUtil;
|
||||||
import com.arialyy.aria.core.task.Task;
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.concurrent.LinkedBlockingQueue;
|
import java.util.concurrent.LinkedBlockingQueue;
|
||||||
@ -36,8 +36,8 @@ public class CachePool implements IPool {
|
|||||||
private static final int MAX_NUM = Integer.MAX_VALUE; //最大下载任务数
|
private static final int MAX_NUM = Integer.MAX_VALUE; //最大下载任务数
|
||||||
private static volatile CachePool INSTANCE = null;
|
private static volatile CachePool INSTANCE = null;
|
||||||
private static final long TIME_OUT = 1000;
|
private static final long TIME_OUT = 1000;
|
||||||
private Map<String, Task> mCacheArray;
|
private Map<String, DownloadTask> mCacheArray;
|
||||||
private LinkedBlockingQueue<Task> mCacheQueue;
|
private LinkedBlockingQueue<DownloadTask> mCacheQueue;
|
||||||
|
|
||||||
private CachePool() {
|
private CachePool() {
|
||||||
mCacheQueue = new LinkedBlockingQueue<>(MAX_NUM);
|
mCacheQueue = new LinkedBlockingQueue<>(MAX_NUM);
|
||||||
@ -53,7 +53,7 @@ public class CachePool implements IPool {
|
|||||||
return INSTANCE;
|
return INSTANCE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public boolean putTask(Task task) {
|
@Override public boolean putTask(DownloadTask task) {
|
||||||
synchronized (LOCK) {
|
synchronized (LOCK) {
|
||||||
if (task == null) {
|
if (task == null) {
|
||||||
Log.e(TAG, "下载任务不能为空!!");
|
Log.e(TAG, "下载任务不能为空!!");
|
||||||
@ -74,10 +74,10 @@ public class CachePool implements IPool {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public Task pollTask() {
|
@Override public DownloadTask pollTask() {
|
||||||
synchronized (LOCK) {
|
synchronized (LOCK) {
|
||||||
try {
|
try {
|
||||||
Task task = null;
|
DownloadTask task = null;
|
||||||
task = mCacheQueue.poll(TIME_OUT, TimeUnit.MICROSECONDS);
|
task = mCacheQueue.poll(TIME_OUT, TimeUnit.MICROSECONDS);
|
||||||
if (task != null) {
|
if (task != null) {
|
||||||
String url = task.getDownloadEntity().getDownloadUrl();
|
String url = task.getDownloadEntity().getDownloadUrl();
|
||||||
@ -91,7 +91,7 @@ public class CachePool implements IPool {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public Task getTask(String downloadUrl) {
|
@Override public DownloadTask getTask(String downloadUrl) {
|
||||||
synchronized (LOCK) {
|
synchronized (LOCK) {
|
||||||
if (TextUtils.isEmpty(downloadUrl)) {
|
if (TextUtils.isEmpty(downloadUrl)) {
|
||||||
Log.e(TAG, "请传入有效的下载链接");
|
Log.e(TAG, "请传入有效的下载链接");
|
||||||
@ -102,7 +102,7 @@ public class CachePool implements IPool {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public boolean removeTask(Task task) {
|
@Override public boolean removeTask(DownloadTask task) {
|
||||||
synchronized (LOCK) {
|
synchronized (LOCK) {
|
||||||
if (task == null) {
|
if (task == null) {
|
||||||
Log.e(TAG, "任务不能为空");
|
Log.e(TAG, "任务不能为空");
|
||||||
@ -122,7 +122,7 @@ public class CachePool implements IPool {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
String key = CommonUtil.keyToHashKey(downloadUrl);
|
String key = CommonUtil.keyToHashKey(downloadUrl);
|
||||||
Task task = mCacheArray.get(key);
|
DownloadTask task = mCacheArray.get(key);
|
||||||
mCacheArray.remove(key);
|
mCacheArray.remove(key);
|
||||||
return mCacheQueue.remove(task);
|
return mCacheQueue.remove(task);
|
||||||
}
|
}
|
@ -14,13 +14,13 @@
|
|||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package com.arialyy.aria.core.queue.pool;
|
package com.arialyy.aria.core.download.queue.pool;
|
||||||
|
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
import com.arialyy.aria.core.download.task.DownloadTask;
|
||||||
import com.arialyy.aria.util.CommonUtil;
|
import com.arialyy.aria.util.CommonUtil;
|
||||||
import com.arialyy.aria.core.queue.IPool;
|
import com.arialyy.aria.core.download.queue.IPool;
|
||||||
import com.arialyy.aria.core.task.Task;
|
|
||||||
import com.arialyy.aria.util.Configuration;
|
import com.arialyy.aria.util.Configuration;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@ -36,8 +36,8 @@ public class ExecutePool implements IPool {
|
|||||||
private static final Object LOCK = new Object();
|
private static final Object LOCK = new Object();
|
||||||
private static final long TIME_OUT = 1000;
|
private static final long TIME_OUT = 1000;
|
||||||
private static volatile ExecutePool INSTANCE = null;
|
private static volatile ExecutePool INSTANCE = null;
|
||||||
private ArrayBlockingQueue<Task> mExecuteQueue;
|
private ArrayBlockingQueue<DownloadTask> mExecuteQueue;
|
||||||
private Map<String, Task> mExecuteArray;
|
private Map<String, DownloadTask> mExecuteArray;
|
||||||
private int mSize;
|
private int mSize;
|
||||||
|
|
||||||
private ExecutePool() {
|
private ExecutePool() {
|
||||||
@ -55,7 +55,7 @@ public class ExecutePool implements IPool {
|
|||||||
return INSTANCE;
|
return INSTANCE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public boolean putTask(Task task) {
|
@Override public boolean putTask(DownloadTask task) {
|
||||||
synchronized (LOCK) {
|
synchronized (LOCK) {
|
||||||
if (task == null) {
|
if (task == null) {
|
||||||
Log.e(TAG, "下载任务不能为空!!");
|
Log.e(TAG, "下载任务不能为空!!");
|
||||||
@ -85,8 +85,8 @@ public class ExecutePool implements IPool {
|
|||||||
*/
|
*/
|
||||||
public void setDownloadNum(int downloadNum) {
|
public void setDownloadNum(int downloadNum) {
|
||||||
try {
|
try {
|
||||||
ArrayBlockingQueue<Task> temp = new ArrayBlockingQueue<>(downloadNum);
|
ArrayBlockingQueue<DownloadTask> temp = new ArrayBlockingQueue<>(downloadNum);
|
||||||
Task task;
|
DownloadTask task;
|
||||||
while ((task = mExecuteQueue.poll(TIME_OUT, TimeUnit.MICROSECONDS)) != null) {
|
while ((task = mExecuteQueue.poll(TIME_OUT, TimeUnit.MICROSECONDS)) != null) {
|
||||||
temp.offer(task);
|
temp.offer(task);
|
||||||
}
|
}
|
||||||
@ -103,7 +103,7 @@ public class ExecutePool implements IPool {
|
|||||||
*
|
*
|
||||||
* @param newTask 新下载任务
|
* @param newTask 新下载任务
|
||||||
*/
|
*/
|
||||||
private boolean putNewTask(Task newTask) {
|
private boolean putNewTask(DownloadTask newTask) {
|
||||||
String url = newTask.getDownloadEntity().getDownloadUrl();
|
String url = newTask.getDownloadEntity().getDownloadUrl();
|
||||||
boolean s = mExecuteQueue.offer(newTask);
|
boolean s = mExecuteQueue.offer(newTask);
|
||||||
Log.w(TAG, "任务添加" + (s ? "成功" : "失败,【" + url + "】"));
|
Log.w(TAG, "任务添加" + (s ? "成功" : "失败,【" + url + "】"));
|
||||||
@ -119,7 +119,7 @@ public class ExecutePool implements IPool {
|
|||||||
*/
|
*/
|
||||||
private boolean pollFirstTask() {
|
private boolean pollFirstTask() {
|
||||||
try {
|
try {
|
||||||
Task oldTask = mExecuteQueue.poll(TIME_OUT, TimeUnit.MICROSECONDS);
|
DownloadTask oldTask = mExecuteQueue.poll(TIME_OUT, TimeUnit.MICROSECONDS);
|
||||||
if (oldTask == null) {
|
if (oldTask == null) {
|
||||||
Log.e(TAG, "移除任务失败");
|
Log.e(TAG, "移除任务失败");
|
||||||
return false;
|
return false;
|
||||||
@ -135,10 +135,10 @@ public class ExecutePool implements IPool {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public Task pollTask() {
|
@Override public DownloadTask pollTask() {
|
||||||
synchronized (LOCK) {
|
synchronized (LOCK) {
|
||||||
try {
|
try {
|
||||||
Task task = null;
|
DownloadTask task = null;
|
||||||
task = mExecuteQueue.poll(TIME_OUT, TimeUnit.MICROSECONDS);
|
task = mExecuteQueue.poll(TIME_OUT, TimeUnit.MICROSECONDS);
|
||||||
if (task != null) {
|
if (task != null) {
|
||||||
String url = task.getDownloadEntity().getDownloadUrl();
|
String url = task.getDownloadEntity().getDownloadUrl();
|
||||||
@ -152,7 +152,7 @@ public class ExecutePool implements IPool {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public Task getTask(String downloadUrl) {
|
@Override public DownloadTask getTask(String downloadUrl) {
|
||||||
synchronized (LOCK) {
|
synchronized (LOCK) {
|
||||||
if (TextUtils.isEmpty(downloadUrl)) {
|
if (TextUtils.isEmpty(downloadUrl)) {
|
||||||
Log.e(TAG, "请传入有效的下载链接");
|
Log.e(TAG, "请传入有效的下载链接");
|
||||||
@ -163,7 +163,7 @@ public class ExecutePool implements IPool {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public boolean removeTask(Task task) {
|
@Override public boolean removeTask(DownloadTask task) {
|
||||||
synchronized (LOCK) {
|
synchronized (LOCK) {
|
||||||
if (task == null) {
|
if (task == null) {
|
||||||
Log.e(TAG, "任务不能为空");
|
Log.e(TAG, "任务不能为空");
|
||||||
@ -183,7 +183,7 @@ public class ExecutePool implements IPool {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
String key = CommonUtil.keyToHashKey(downloadUrl);
|
String key = CommonUtil.keyToHashKey(downloadUrl);
|
||||||
Task task = mExecuteArray.get(key);
|
DownloadTask task = mExecuteArray.get(key);
|
||||||
mExecuteArray.remove(key);
|
mExecuteArray.remove(key);
|
||||||
return mExecuteQueue.remove(task);
|
return mExecuteQueue.remove(task);
|
||||||
}
|
}
|
@ -14,15 +14,15 @@
|
|||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package com.arialyy.aria.core.scheduler;
|
package com.arialyy.aria.core.download.scheduler;
|
||||||
|
|
||||||
import android.os.CountDownTimer;
|
import android.os.CountDownTimer;
|
||||||
import android.os.Message;
|
import android.os.Message;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import com.arialyy.aria.core.AriaManager;
|
import com.arialyy.aria.core.AriaManager;
|
||||||
import com.arialyy.aria.core.queue.ITaskQueue;
|
import com.arialyy.aria.core.download.queue.ITaskQueue;
|
||||||
import com.arialyy.aria.core.DownloadEntity;
|
import com.arialyy.aria.core.download.DownloadEntity;
|
||||||
import com.arialyy.aria.core.task.Task;
|
import com.arialyy.aria.core.download.task.DownloadTask;
|
||||||
import com.arialyy.aria.util.Configuration;
|
import com.arialyy.aria.util.Configuration;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@ -108,7 +108,7 @@ public class DownloadSchedulers implements IDownloadSchedulers {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override public boolean handleMessage(Message msg) {
|
@Override public boolean handleMessage(Message msg) {
|
||||||
Task task = (Task) msg.obj;
|
DownloadTask task = (DownloadTask) msg.obj;
|
||||||
if (task == null) {
|
if (task == null) {
|
||||||
Log.e(TAG, "请传入下载任务");
|
Log.e(TAG, "请传入下载任务");
|
||||||
return true;
|
return true;
|
||||||
@ -140,7 +140,7 @@ public class DownloadSchedulers implements IDownloadSchedulers {
|
|||||||
*
|
*
|
||||||
* @param state 状态
|
* @param state 状态
|
||||||
*/
|
*/
|
||||||
private void callback(int state, Task task) {
|
private void callback(int state, DownloadTask task) {
|
||||||
if (mSchedulerListeners.size() > 0) {
|
if (mSchedulerListeners.size() > 0) {
|
||||||
//if (!TextUtils.isEmpty(task.getTargetName())) {
|
//if (!TextUtils.isEmpty(task.getTargetName())) {
|
||||||
// callback(state, task, mSchedulerListeners.get(task.getTargetName()));
|
// callback(state, task, mSchedulerListeners.get(task.getTargetName()));
|
||||||
@ -152,7 +152,7 @@ public class DownloadSchedulers implements IDownloadSchedulers {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void callback(int state, Task task, OnSchedulerListener listener) {
|
private void callback(int state, DownloadTask task, OnSchedulerListener listener) {
|
||||||
if (listener != null) {
|
if (listener != null) {
|
||||||
if (task == null) {
|
if (task == null) {
|
||||||
Log.e(TAG, "TASK 为null,回调失败");
|
Log.e(TAG, "TASK 为null,回调失败");
|
||||||
@ -201,7 +201,7 @@ public class DownloadSchedulers implements IDownloadSchedulers {
|
|||||||
|
|
||||||
@Override public void onFinish() {
|
@Override public void onFinish() {
|
||||||
if (entity.getFailNum() <= config.getReTryNum()) {
|
if (entity.getFailNum() <= config.getReTryNum()) {
|
||||||
Task task = mQueue.getTask(entity);
|
DownloadTask task = mQueue.getTask(entity);
|
||||||
mQueue.reTryStart(task);
|
mQueue.reTryStart(task);
|
||||||
try {
|
try {
|
||||||
Thread.sleep(config.getReTryInterval());
|
Thread.sleep(config.getReTryInterval());
|
||||||
@ -222,7 +222,7 @@ public class DownloadSchedulers implements IDownloadSchedulers {
|
|||||||
* @param entity 通过Handler传递的下载实体
|
* @param entity 通过Handler传递的下载实体
|
||||||
*/
|
*/
|
||||||
@Override public void startNextTask(DownloadEntity entity) {
|
@Override public void startNextTask(DownloadEntity entity) {
|
||||||
Task newTask = mQueue.getNextTask();
|
DownloadTask newTask = mQueue.getNextTask();
|
||||||
if (newTask == null) {
|
if (newTask == null) {
|
||||||
Log.w(TAG, "没有下一任务");
|
Log.w(TAG, "没有下一任务");
|
||||||
return;
|
return;
|
@ -14,10 +14,10 @@
|
|||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package com.arialyy.aria.core.scheduler;
|
package com.arialyy.aria.core.download.scheduler;
|
||||||
|
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
import com.arialyy.aria.core.DownloadEntity;
|
import com.arialyy.aria.core.download.DownloadEntity;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by “AriaLyy@outlook.com” on 2016/11/2.
|
* Created by “AriaLyy@outlook.com” on 2016/11/2.
|
@ -13,9 +13,9 @@
|
|||||||
* 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.scheduler;
|
package com.arialyy.aria.core.download.scheduler;
|
||||||
|
|
||||||
import com.arialyy.aria.core.task.Task;
|
import com.arialyy.aria.core.download.task.DownloadTask;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Target处理任务监听
|
* Target处理任务监听
|
||||||
@ -24,40 +24,40 @@ public interface OnSchedulerListener {
|
|||||||
/**
|
/**
|
||||||
* 任务预加载
|
* 任务预加载
|
||||||
*/
|
*/
|
||||||
public void onTaskPre(Task task);
|
public void onTaskPre(DownloadTask task);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 任务恢复下载
|
* 任务恢复下载
|
||||||
*/
|
*/
|
||||||
public void onTaskResume(Task task);
|
public void onTaskResume(DownloadTask task);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 任务开始
|
* 任务开始
|
||||||
*/
|
*/
|
||||||
public void onTaskStart(Task task);
|
public void onTaskStart(DownloadTask task);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 任务停止
|
* 任务停止
|
||||||
*/
|
*/
|
||||||
public void onTaskStop(Task task);
|
public void onTaskStop(DownloadTask task);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 任务取消
|
* 任务取消
|
||||||
*/
|
*/
|
||||||
public void onTaskCancel(Task task);
|
public void onTaskCancel(DownloadTask task);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 任务下载失败
|
* 任务下载失败
|
||||||
*/
|
*/
|
||||||
public void onTaskFail(Task task);
|
public void onTaskFail(DownloadTask task);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 任务完成
|
* 任务完成
|
||||||
*/
|
*/
|
||||||
public void onTaskComplete(Task task);
|
public void onTaskComplete(DownloadTask task);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 任务执行中
|
* 任务执行中
|
||||||
*/
|
*/
|
||||||
public void onTaskRunning(Task task);
|
public void onTaskRunning(DownloadTask task);
|
||||||
}
|
}
|
@ -13,9 +13,9 @@
|
|||||||
* 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.task;
|
package com.arialyy.aria.core.download.task;
|
||||||
|
|
||||||
import com.arialyy.aria.core.DownloadTaskEntity;
|
import com.arialyy.aria.core.download.DownloadTaskEntity;
|
||||||
import com.arialyy.aria.util.CAConfiguration;
|
import com.arialyy.aria.util.CAConfiguration;
|
||||||
import com.arialyy.aria.util.SSLContextUtil;
|
import com.arialyy.aria.util.SSLContextUtil;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
@ -15,7 +15,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
package com.arialyy.aria.core.task;
|
package com.arialyy.aria.core.download.task;
|
||||||
|
|
||||||
class DownloadListener implements IDownloadListener {
|
class DownloadListener implements IDownloadListener {
|
||||||
|
|
@ -13,7 +13,7 @@
|
|||||||
* 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.task;
|
package com.arialyy.aria.core.download.task;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by lyy on 2017/1/18.
|
* Created by lyy on 2017/1/18.
|
@ -14,17 +14,17 @@
|
|||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package com.arialyy.aria.core.task;
|
package com.arialyy.aria.core.download.task;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import com.arialyy.aria.core.Aria;
|
import com.arialyy.aria.core.Aria;
|
||||||
import com.arialyy.aria.core.DownloadTaskEntity;
|
import com.arialyy.aria.core.download.DownloadTaskEntity;
|
||||||
import com.arialyy.aria.core.scheduler.DownloadSchedulers;
|
import com.arialyy.aria.core.download.scheduler.DownloadSchedulers;
|
||||||
import com.arialyy.aria.core.scheduler.IDownloadSchedulers;
|
import com.arialyy.aria.core.download.scheduler.IDownloadSchedulers;
|
||||||
import com.arialyy.aria.core.DownloadEntity;
|
import com.arialyy.aria.core.download.DownloadEntity;
|
||||||
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.util.Configuration;
|
import com.arialyy.aria.util.Configuration;
|
||||||
@ -34,8 +34,8 @@ import java.lang.ref.WeakReference;
|
|||||||
* Created by lyy on 2016/8/11.
|
* Created by lyy on 2016/8/11.
|
||||||
* 下载任务类
|
* 下载任务类
|
||||||
*/
|
*/
|
||||||
public class Task {
|
public class DownloadTask {
|
||||||
public static final String TAG = "Task";
|
public static final String TAG = "DownloadTask";
|
||||||
/**
|
/**
|
||||||
* 产生该任务对象的hash码
|
* 产生该任务对象的hash码
|
||||||
*/
|
*/
|
||||||
@ -47,7 +47,7 @@ public class Task {
|
|||||||
private Context mContext;
|
private Context mContext;
|
||||||
private IDownloadUtil mUtil;
|
private IDownloadUtil mUtil;
|
||||||
|
|
||||||
private Task(Context context, DownloadTaskEntity taskEntity, Handler outHandler) {
|
private DownloadTask(Context context, DownloadTaskEntity taskEntity, Handler outHandler) {
|
||||||
mContext = context.getApplicationContext();
|
mContext = context.getApplicationContext();
|
||||||
mTaskEntity = taskEntity;
|
mTaskEntity = taskEntity;
|
||||||
mEntity = taskEntity.downloadEntity;
|
mEntity = taskEntity.downloadEntity;
|
||||||
@ -199,8 +199,8 @@ public class Task {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Task build() {
|
public DownloadTask build() {
|
||||||
Task task = new Task(context, taskEntity, outHandler);
|
DownloadTask task = new DownloadTask(context, taskEntity, outHandler);
|
||||||
task.setTargetName(targetName);
|
task.setTargetName(targetName);
|
||||||
taskEntity.downloadEntity.save();
|
taskEntity.downloadEntity.save();
|
||||||
return task;
|
return task;
|
||||||
@ -212,7 +212,7 @@ public class Task {
|
|||||||
*/
|
*/
|
||||||
private static class DListener extends DownloadListener {
|
private static class DListener extends DownloadListener {
|
||||||
WeakReference<Handler> outHandler;
|
WeakReference<Handler> outHandler;
|
||||||
WeakReference<Task> wTask;
|
WeakReference<DownloadTask> wTask;
|
||||||
Context context;
|
Context context;
|
||||||
Intent sendIntent;
|
Intent sendIntent;
|
||||||
long INTERVAL = 1024 * 10; //10k大小的间隔
|
long INTERVAL = 1024 * 10; //10k大小的间隔
|
||||||
@ -221,9 +221,9 @@ public class Task {
|
|||||||
long INTERVAL_TIME = 1000; //1m更新周期
|
long INTERVAL_TIME = 1000; //1m更新周期
|
||||||
boolean isFirst = true;
|
boolean isFirst = true;
|
||||||
DownloadEntity downloadEntity;
|
DownloadEntity downloadEntity;
|
||||||
Task task;
|
DownloadTask task;
|
||||||
|
|
||||||
DListener(Context context, Task task, Handler outHandler) {
|
DListener(Context context, DownloadTask task, Handler outHandler) {
|
||||||
this.context = context;
|
this.context = context;
|
||||||
this.outHandler = new WeakReference<>(outHandler);
|
this.outHandler = new WeakReference<>(outHandler);
|
||||||
this.wTask = new WeakReference<>(task);
|
this.wTask = new WeakReference<>(task);
|
@ -14,30 +14,30 @@
|
|||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package com.arialyy.aria.core.task;
|
package com.arialyy.aria.core.download.task;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import com.arialyy.aria.core.DownloadTaskEntity;
|
import com.arialyy.aria.core.download.DownloadTaskEntity;
|
||||||
import com.arialyy.aria.core.scheduler.IDownloadSchedulers;
|
import com.arialyy.aria.core.download.scheduler.IDownloadSchedulers;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by lyy on 2016/8/18.
|
* Created by lyy on 2016/8/18.
|
||||||
* 任务工厂
|
* 任务工厂
|
||||||
*/
|
*/
|
||||||
public class TaskFactory {
|
public class DownloadTaskFactory {
|
||||||
private static final String TAG = "TaskFactory";
|
private static final String TAG = "DownloadTaskFactory";
|
||||||
|
|
||||||
private static final Object LOCK = new Object();
|
private static final Object LOCK = new Object();
|
||||||
private static volatile TaskFactory INSTANCE = null;
|
private static volatile DownloadTaskFactory INSTANCE = null;
|
||||||
|
|
||||||
private TaskFactory() {
|
private DownloadTaskFactory() {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static TaskFactory getInstance() {
|
public static DownloadTaskFactory getInstance() {
|
||||||
if (INSTANCE == null) {
|
if (INSTANCE == null) {
|
||||||
synchronized (LOCK) {
|
synchronized (LOCK) {
|
||||||
INSTANCE = new TaskFactory();
|
INSTANCE = new DownloadTaskFactory();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return INSTANCE;
|
return INSTANCE;
|
||||||
@ -49,7 +49,7 @@ public class TaskFactory {
|
|||||||
* @param entity 下载任务实体{@link DownloadTaskEntity}
|
* @param entity 下载任务实体{@link DownloadTaskEntity}
|
||||||
* @param schedulers {@link IDownloadSchedulers}
|
* @param schedulers {@link IDownloadSchedulers}
|
||||||
*/
|
*/
|
||||||
public Task createTask(Context context, DownloadTaskEntity entity,
|
public DownloadTask createTask(Context context, DownloadTaskEntity entity,
|
||||||
IDownloadSchedulers schedulers) {
|
IDownloadSchedulers schedulers) {
|
||||||
return createTask("", context, entity, schedulers);
|
return createTask("", context, entity, schedulers);
|
||||||
}
|
}
|
||||||
@ -58,9 +58,9 @@ public class TaskFactory {
|
|||||||
* @param entity 下载任务实体{@link DownloadTaskEntity}
|
* @param entity 下载任务实体{@link DownloadTaskEntity}
|
||||||
* @param schedulers {@link IDownloadSchedulers}
|
* @param schedulers {@link IDownloadSchedulers}
|
||||||
*/
|
*/
|
||||||
public Task createTask(String targetName, Context context, DownloadTaskEntity entity,
|
public DownloadTask createTask(String targetName, Context context, DownloadTaskEntity entity,
|
||||||
IDownloadSchedulers schedulers) {
|
IDownloadSchedulers schedulers) {
|
||||||
Task.Builder builder = new Task.Builder(targetName, context, entity);
|
DownloadTask.Builder builder = new DownloadTask.Builder(targetName, context, entity);
|
||||||
builder.setOutHandler(schedulers);
|
builder.setOutHandler(schedulers);
|
||||||
return builder.build();
|
return builder.build();
|
||||||
}
|
}
|
@ -14,13 +14,13 @@
|
|||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package com.arialyy.aria.core.task;
|
package com.arialyy.aria.core.download.task;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.util.SparseArray;
|
import android.util.SparseArray;
|
||||||
import com.arialyy.aria.core.DownloadEntity;
|
import com.arialyy.aria.core.download.DownloadEntity;
|
||||||
import com.arialyy.aria.core.DownloadTaskEntity;
|
import com.arialyy.aria.core.download.DownloadTaskEntity;
|
||||||
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.io.File;
|
import java.io.File;
|
@ -14,7 +14,7 @@
|
|||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package com.arialyy.aria.core.task;
|
package com.arialyy.aria.core.download.task;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 下载监听
|
* 下载监听
|
@ -15,13 +15,13 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
package com.arialyy.aria.core.task;
|
package com.arialyy.aria.core.download.task;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by “AriaLyy@outlook.com” on 2016/10/31.
|
* Created by “AriaLyy@outlook.com” on 2016/10/31.
|
||||||
* 抽象的下载接口
|
* 抽象的下载接口
|
||||||
*/
|
*/
|
||||||
public interface IDownloadUtil {
|
interface IDownloadUtil {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取当前下载位置
|
* 获取当前下载位置
|
@ -13,7 +13,7 @@
|
|||||||
* 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.task;
|
package com.arialyy.aria.core.download.task;
|
||||||
|
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import com.arialyy.aria.util.CommonUtil;
|
import com.arialyy.aria.util.CommonUtil;
|
12
Aria/src/main/java/com/arialyy/aria/core/inf/ICmd.java
Normal file
12
Aria/src/main/java/com/arialyy/aria/core/inf/ICmd.java
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
package com.arialyy.aria.core.inf;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by Aria.Lao on 2017/2/9.
|
||||||
|
*/
|
||||||
|
|
||||||
|
public interface ICmd {
|
||||||
|
/**
|
||||||
|
* 执行命令
|
||||||
|
*/
|
||||||
|
public abstract void executeCmd();
|
||||||
|
}
|
@ -13,12 +13,12 @@
|
|||||||
* 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;
|
package com.arialyy.aria.core.inf;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by Aria.Lao on 2017/2/6.
|
* Created by Aria.Lao on 2017/2/6.
|
||||||
*/
|
*/
|
||||||
interface IReceiver {
|
public interface IReceiver {
|
||||||
/**
|
/**
|
||||||
* Receiver 销毁
|
* Receiver 销毁
|
||||||
*/
|
*/
|
@ -0,0 +1,11 @@
|
|||||||
|
package com.arialyy.aria.core.upload;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by Aria.Lao on 2017/2/9.
|
||||||
|
* 上传监听
|
||||||
|
*/
|
||||||
|
|
||||||
|
public interface IUploadListener {
|
||||||
|
|
||||||
|
public void onFail();
|
||||||
|
}
|
@ -0,0 +1,150 @@
|
|||||||
|
package com.arialyy.aria.core.upload;
|
||||||
|
|
||||||
|
import android.util.Log;
|
||||||
|
import java.io.BufferedReader;
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.FileInputStream;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStreamReader;
|
||||||
|
import java.io.OutputStream;
|
||||||
|
import java.io.OutputStreamWriter;
|
||||||
|
import java.io.PrintWriter;
|
||||||
|
import java.net.HttpURLConnection;
|
||||||
|
import java.net.URL;
|
||||||
|
import java.net.URLConnection;
|
||||||
|
|
||||||
|
public class MultipartUtility {
|
||||||
|
|
||||||
|
private final String boundary;
|
||||||
|
private static final String LINE_FEED = "\r\n";
|
||||||
|
private HttpURLConnection httpConn;
|
||||||
|
private String charset;
|
||||||
|
private OutputStream outputStream;
|
||||||
|
private PrintWriter writer;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This constructor initializes a new HTTP POST request with content type
|
||||||
|
* is set to multipart/form-data
|
||||||
|
*
|
||||||
|
* @param requestURL
|
||||||
|
* @param charset
|
||||||
|
* @throws IOException
|
||||||
|
*/
|
||||||
|
public MultipartUtility(String requestURL, String charset)
|
||||||
|
throws IOException {
|
||||||
|
this.charset = charset;
|
||||||
|
|
||||||
|
// creates a unique boundary based on time stamp
|
||||||
|
boundary = "===" + System.currentTimeMillis() + "===";
|
||||||
|
|
||||||
|
URL url = new URL(requestURL);
|
||||||
|
Log.e("URL", "URL : " + requestURL.toString());
|
||||||
|
httpConn = (HttpURLConnection) url.openConnection();
|
||||||
|
httpConn.setUseCaches(false);
|
||||||
|
httpConn.setDoOutput(true); // indicates POST method
|
||||||
|
httpConn.setDoInput(true);
|
||||||
|
httpConn.setRequestProperty("Content-Type",
|
||||||
|
"multipart/form-data; boundary=" + boundary);
|
||||||
|
httpConn.setRequestProperty("User-Agent", "CodeJava Agent");
|
||||||
|
httpConn.setRequestProperty("Test", "Bonjour");
|
||||||
|
outputStream = httpConn.getOutputStream();
|
||||||
|
writer = new PrintWriter(new OutputStreamWriter(outputStream, charset),
|
||||||
|
true);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adds a form field to the request
|
||||||
|
*
|
||||||
|
* @param name field name
|
||||||
|
* @param value field value
|
||||||
|
*/
|
||||||
|
public void addFormField(String name, String value) {
|
||||||
|
writer.append("--" + boundary).append(LINE_FEED);
|
||||||
|
writer.append("Content-Disposition: form-data; name=\"" + name + "\"")
|
||||||
|
.append(LINE_FEED);
|
||||||
|
writer.append("Content-Type: text/plain; charset=" + charset).append(
|
||||||
|
LINE_FEED);
|
||||||
|
writer.append(LINE_FEED);
|
||||||
|
writer.append(value).append(LINE_FEED);
|
||||||
|
writer.flush();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adds a upload file section to the request
|
||||||
|
*
|
||||||
|
* @param fieldName name attribute in <input type="file" name="..." />
|
||||||
|
* @param uploadFile a File to be uploaded
|
||||||
|
* @throws IOException
|
||||||
|
*/
|
||||||
|
public void addFilePart(String fieldName, File uploadFile)
|
||||||
|
throws IOException {
|
||||||
|
String fileName = uploadFile.getName();
|
||||||
|
writer.append("--" + boundary).append(LINE_FEED);
|
||||||
|
writer.append(
|
||||||
|
"Content-Disposition: form-data; name=\"" + fieldName
|
||||||
|
+ "\"; filename=\"" + fileName + "\"")
|
||||||
|
.append(LINE_FEED);
|
||||||
|
writer.append(
|
||||||
|
"Content-Type: "
|
||||||
|
+ URLConnection.guessContentTypeFromName(fileName))
|
||||||
|
.append(LINE_FEED);
|
||||||
|
writer.append("Content-Transfer-Encoding: binary").append(LINE_FEED);
|
||||||
|
writer.append(LINE_FEED);
|
||||||
|
writer.flush();
|
||||||
|
|
||||||
|
FileInputStream inputStream = new FileInputStream(uploadFile);
|
||||||
|
byte[] buffer = new byte[4096];
|
||||||
|
int bytesRead = -1;
|
||||||
|
while ((bytesRead = inputStream.read(buffer)) != -1) {
|
||||||
|
outputStream.write(buffer, 0, bytesRead);
|
||||||
|
}
|
||||||
|
outputStream.flush();
|
||||||
|
inputStream.close();
|
||||||
|
|
||||||
|
writer.append(LINE_FEED);
|
||||||
|
writer.flush();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adds a header field to the request.
|
||||||
|
*
|
||||||
|
* @param name - name of the header field
|
||||||
|
* @param value - value of the header field
|
||||||
|
*/
|
||||||
|
public void addHeaderField(String name, String value) {
|
||||||
|
writer.append(name + ": " + value).append(LINE_FEED);
|
||||||
|
writer.flush();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Completes the request and receives response from the server.
|
||||||
|
*
|
||||||
|
* @return a list of Strings as response in case the server returned
|
||||||
|
* status OK, otherwise an exception is thrown.
|
||||||
|
* @throws IOException
|
||||||
|
*/
|
||||||
|
public String finish() throws IOException {
|
||||||
|
StringBuffer response = new StringBuffer();
|
||||||
|
|
||||||
|
writer.append(LINE_FEED).flush();
|
||||||
|
writer.append("--" + boundary + "--").append(LINE_FEED);
|
||||||
|
writer.close();
|
||||||
|
|
||||||
|
// checks server's status code first
|
||||||
|
int status = httpConn.getResponseCode();
|
||||||
|
if (status == HttpURLConnection.HTTP_OK) {
|
||||||
|
BufferedReader reader = new BufferedReader(new InputStreamReader(
|
||||||
|
httpConn.getInputStream()));
|
||||||
|
String line = null;
|
||||||
|
while ((line = reader.readLine()) != null) {
|
||||||
|
response.append(line);
|
||||||
|
}
|
||||||
|
reader.close();
|
||||||
|
httpConn.disconnect();
|
||||||
|
} else {
|
||||||
|
throw new IOException("Server returned non-OK status: " + status);
|
||||||
|
}
|
||||||
|
|
||||||
|
return response.toString();
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,30 @@
|
|||||||
|
package com.arialyy.aria.core.upload;
|
||||||
|
|
||||||
|
import com.arialyy.aria.core.download.DownloadEntity;
|
||||||
|
import com.arialyy.aria.orm.DbEntity;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by Aria.Lao on 2017/2/9.
|
||||||
|
* 上传文件实体
|
||||||
|
*/
|
||||||
|
public class UploadEntity {
|
||||||
|
|
||||||
|
private String filePath; //文件路径
|
||||||
|
private String fileName; //文件名
|
||||||
|
|
||||||
|
public String getFilePath() {
|
||||||
|
return filePath;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFilePath(String filePath) {
|
||||||
|
this.filePath = filePath;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getFileName() {
|
||||||
|
return fileName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFileName(String fileName) {
|
||||||
|
this.fileName = fileName;
|
||||||
|
}
|
||||||
|
}
|
@ -13,7 +13,9 @@
|
|||||||
* 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;
|
package com.arialyy.aria.core.upload;
|
||||||
|
|
||||||
|
import com.arialyy.aria.core.inf.IReceiver;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by Aria.Lao on 2017/2/6.
|
* Created by Aria.Lao on 2017/2/6.
|
@ -0,0 +1,22 @@
|
|||||||
|
package com.arialyy.aria.core.upload;
|
||||||
|
|
||||||
|
import com.arialyy.aria.core.RequestEnum;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by Aria.Lao on 2017/2/9.
|
||||||
|
*/
|
||||||
|
|
||||||
|
public class UploadTaskEntity {
|
||||||
|
public UploadEntity uploadEntity;
|
||||||
|
public RequestEnum requestEnum = RequestEnum.GET;
|
||||||
|
public String uploadUrl; //上传路径
|
||||||
|
public String uploadKey; //文件上传需要的key
|
||||||
|
public String contentType = "multipart/form-data"; //上传的文件类型
|
||||||
|
public Map<String, String> headers = new HashMap<>();
|
||||||
|
|
||||||
|
public UploadTaskEntity(UploadEntity downloadEntity) {
|
||||||
|
this.uploadEntity = downloadEntity;
|
||||||
|
}
|
||||||
|
}
|
122
Aria/src/main/java/com/arialyy/aria/core/upload/UploadUtil.java
Normal file
122
Aria/src/main/java/com/arialyy/aria/core/upload/UploadUtil.java
Normal file
@ -0,0 +1,122 @@
|
|||||||
|
package com.arialyy.aria.core.upload;
|
||||||
|
|
||||||
|
import android.util.Log;
|
||||||
|
import com.arialyy.aria.util.CheckUtil;
|
||||||
|
import java.io.BufferedInputStream;
|
||||||
|
import java.io.DataOutputStream;
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.FileInputStream;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.io.OutputStream;
|
||||||
|
import java.net.HttpURLConnection;
|
||||||
|
import java.net.MalformedURLException;
|
||||||
|
import java.net.URL;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Set;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by Aria.Lao on 2017/2/9.
|
||||||
|
* 上传工具
|
||||||
|
*/
|
||||||
|
public class UploadUtil implements Runnable {
|
||||||
|
private static final String TAG = "UploadUtil";
|
||||||
|
private UploadEntity mUploadEntity;
|
||||||
|
private UploadTaskEntity mTaskEntity;
|
||||||
|
private IUploadListener mListener;
|
||||||
|
|
||||||
|
|
||||||
|
public UploadUtil(UploadTaskEntity taskEntity, IUploadListener listener) {
|
||||||
|
mTaskEntity = taskEntity;
|
||||||
|
CheckUtil.checkUploadEntity(taskEntity.uploadEntity);
|
||||||
|
mUploadEntity = taskEntity.uploadEntity;
|
||||||
|
mListener = listener;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void start() {
|
||||||
|
new Thread(this).start();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override public void run() {
|
||||||
|
File file = new File(mUploadEntity.getFilePath());
|
||||||
|
if (!file.exists()) {
|
||||||
|
Log.e(TAG, "【" + mUploadEntity.getFilePath() + "】,文件不存在。");
|
||||||
|
mListener.onFail();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
String BOUNDARY = UUID.randomUUID().toString(); // 边界标识 随机生成
|
||||||
|
String PREFIX = "--", LINE_END = "\r\n";
|
||||||
|
String CONTENT_TYPE = "multipart/form-data"; // 内容类型
|
||||||
|
try {
|
||||||
|
HttpURLConnection conn = (HttpURLConnection) new URL(mTaskEntity.uploadUrl).openConnection();
|
||||||
|
conn.setReadTimeout(5000);
|
||||||
|
conn.setConnectTimeout(5000);
|
||||||
|
conn.setDoInput(true);
|
||||||
|
conn.setDoOutput(true);
|
||||||
|
conn.setUseCaches(false);
|
||||||
|
conn.setRequestMethod("POST");
|
||||||
|
conn.setRequestProperty("Charset", "utf-8"); // 设置编码
|
||||||
|
conn.setRequestProperty("connection", "keep-alive");
|
||||||
|
//conn.setRequestProperty("Content-Type", CONTENT_TYPE + ";boundary=" + BOUNDARY);
|
||||||
|
conn.setRequestProperty("Content-Type", mTaskEntity.contentType + ";boundary=" + BOUNDARY);
|
||||||
|
|
||||||
|
Set<String> keys = mTaskEntity.headers.keySet();
|
||||||
|
for (String key : keys) {
|
||||||
|
conn.setRequestProperty(key, mTaskEntity.headers.get(key));
|
||||||
|
}
|
||||||
|
|
||||||
|
OutputStream outputSteam = conn.getOutputStream();
|
||||||
|
DataOutputStream dos = new DataOutputStream(outputSteam);
|
||||||
|
StringBuilder sb = new StringBuilder();
|
||||||
|
sb.append(PREFIX);
|
||||||
|
sb.append(BOUNDARY);
|
||||||
|
sb.append(LINE_END);
|
||||||
|
sb.append("Content-Disposition: form-data; name=\"")
|
||||||
|
.append(mTaskEntity.uploadUrl)
|
||||||
|
.append("\"; filename=\"")
|
||||||
|
.append(file.getName())
|
||||||
|
.append("\"")
|
||||||
|
.append(LINE_END);
|
||||||
|
sb.append("Content-Type:")
|
||||||
|
.append(mTaskEntity.contentType)
|
||||||
|
.append("; charset=utf-8")
|
||||||
|
.append(LINE_END);
|
||||||
|
sb.append(LINE_END);
|
||||||
|
dos.write(sb.toString().getBytes());
|
||||||
|
|
||||||
|
InputStream is = new FileInputStream(file);
|
||||||
|
byte[] bytes = new byte[1024];
|
||||||
|
int len = 0;
|
||||||
|
while ((len = is.read(bytes)) != -1) {
|
||||||
|
dos.write(bytes, 0, len);
|
||||||
|
}
|
||||||
|
is.close();
|
||||||
|
dos.write(LINE_END.getBytes());
|
||||||
|
byte[] end_data = (PREFIX + BOUNDARY + PREFIX + LINE_END).getBytes();
|
||||||
|
dos.write(end_data);
|
||||||
|
dos.flush();
|
||||||
|
dos.close();
|
||||||
|
|
||||||
|
int res = conn.getResponseCode();
|
||||||
|
if (res == 200) {
|
||||||
|
BufferedInputStream inputStream = new BufferedInputStream(conn.getInputStream());
|
||||||
|
byte[] buf = new byte[1024];
|
||||||
|
StringBuilder stringBuilder = new StringBuilder();
|
||||||
|
while (inputStream.read(buf) > 0) {
|
||||||
|
stringBuilder.append(new String(buf, 0, buf.length));
|
||||||
|
}
|
||||||
|
String data = stringBuilder.toString();
|
||||||
|
Log.d(TAG, data);
|
||||||
|
//L.j(data);
|
||||||
|
//absResponse.onResponse(data);
|
||||||
|
} else {
|
||||||
|
//absResponse.onError("error");
|
||||||
|
}
|
||||||
|
} catch (MalformedURLException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -18,7 +18,8 @@ package com.arialyy.aria.util;
|
|||||||
|
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import com.arialyy.aria.core.DownloadEntity;
|
import com.arialyy.aria.core.download.DownloadEntity;
|
||||||
|
import com.arialyy.aria.core.upload.UploadEntity;
|
||||||
import com.arialyy.aria.exception.FileException;
|
import com.arialyy.aria.exception.FileException;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.regex.Matcher;
|
import java.util.regex.Matcher;
|
||||||
@ -73,21 +74,32 @@ public class CheckUtil {
|
|||||||
if (TextUtils.isEmpty(downloadUrl)) throw new IllegalArgumentException("下载链接不能为null");
|
if (TextUtils.isEmpty(downloadUrl)) throw new IllegalArgumentException("下载链接不能为null");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 检查上传实体是否合法
|
||||||
|
*/
|
||||||
|
public static void checkUploadEntity(UploadEntity entity) {
|
||||||
|
if (entity == null) {
|
||||||
|
throw new NullPointerException("上传实体不能为空");
|
||||||
|
}
|
||||||
|
if (TextUtils.isEmpty(entity.getFilePath())) {
|
||||||
|
throw new IllegalArgumentException("上传文件路径不能为空");
|
||||||
|
} else if (TextUtils.isEmpty(entity.getFileName())) {
|
||||||
|
throw new IllegalArgumentException("上传文件名不能为空");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 检测下载实体是否合法
|
* 检测下载实体是否合法
|
||||||
*
|
*
|
||||||
* @param entity 下载实体
|
* @param entity 下载实体
|
||||||
* @return 合法(true)
|
* @return 合法(true)
|
||||||
*/
|
*/
|
||||||
public static boolean checkDownloadEntity(DownloadEntity entity) {
|
public static void checkDownloadEntity(DownloadEntity entity) {
|
||||||
if (entity == null) {
|
if (entity == null) {
|
||||||
Log.w(TAG, "下载实体不能为空");
|
throw new NullPointerException("下载实体不能为空");
|
||||||
return false;
|
|
||||||
} else if (TextUtils.isEmpty(entity.getDownloadUrl())) {
|
} else if (TextUtils.isEmpty(entity.getDownloadUrl())) {
|
||||||
Log.w(TAG, "下载链接不能为空");
|
throw new IllegalArgumentException("下载链接不能为空");
|
||||||
return false;
|
|
||||||
} else if (TextUtils.isEmpty(entity.getFileName())) {
|
} else if (TextUtils.isEmpty(entity.getFileName())) {
|
||||||
//Log.w(TAG, "文件名不能为空");
|
|
||||||
throw new FileException("文件名不能为null");
|
throw new FileException("文件名不能为null");
|
||||||
} else if (TextUtils.isEmpty(entity.getDownloadPath())) {
|
} else if (TextUtils.isEmpty(entity.getDownloadPath())) {
|
||||||
throw new FileException("文件保存路径不能为null");
|
throw new FileException("文件保存路径不能为null");
|
||||||
@ -102,6 +114,5 @@ public class CheckUtil {
|
|||||||
dPath += fileName;
|
dPath += fileName;
|
||||||
entity.setDownloadPath(dPath);
|
entity.setDownloadPath(dPath);
|
||||||
}
|
}
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -21,10 +21,9 @@ import android.content.Intent;
|
|||||||
import android.content.SharedPreferences;
|
import android.content.SharedPreferences;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import com.arialyy.aria.core.DownloadTaskEntity;
|
import com.arialyy.aria.core.download.DownloadTaskEntity;
|
||||||
import com.arialyy.aria.core.command.download.CmdFactory;
|
import com.arialyy.aria.core.download.command.CmdFactory;
|
||||||
import com.arialyy.aria.core.DownloadEntity;
|
import com.arialyy.aria.core.download.command.IDownloadCmd;
|
||||||
import com.arialyy.aria.core.command.download.IDownloadCmd;
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.FileInputStream;
|
import java.io.FileInputStream;
|
||||||
import java.io.FileOutputStream;
|
import java.io.FileOutputStream;
|
||||||
|
@ -14,8 +14,9 @@
|
|||||||
android:supportsRtl="true"
|
android:supportsRtl="true"
|
||||||
android:theme="@style/AppTheme.NoActionBar">
|
android:theme="@style/AppTheme.NoActionBar">
|
||||||
<!--android:name=".activity.SingleTaskActivity"-->
|
<!--android:name=".activity.SingleTaskActivity"-->
|
||||||
|
<!--android:name=".MainActivity"-->
|
||||||
<activity
|
<activity
|
||||||
android:name=".MainActivity"
|
android:name=".upload"
|
||||||
android:label="@string/app_name">
|
android:label="@string/app_name">
|
||||||
<intent-filter>
|
<intent-filter>
|
||||||
<action android:name="android.intent.action.MAIN"/>
|
<action android:name="android.intent.action.MAIN"/>
|
||||||
|
@ -7,10 +7,10 @@ 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.DownloadTarget;
|
import com.arialyy.aria.core.download.DownloadTarget;
|
||||||
import com.arialyy.aria.core.Aria;
|
import com.arialyy.aria.core.Aria;
|
||||||
import com.arialyy.aria.core.DownloadEntity;
|
import com.arialyy.aria.core.download.DownloadEntity;
|
||||||
import com.arialyy.aria.core.task.Task;
|
import com.arialyy.aria.core.download.task.DownloadTask;
|
||||||
import com.arialyy.aria.util.CommonUtil;
|
import com.arialyy.aria.util.CommonUtil;
|
||||||
import com.arialyy.frame.core.AbsDialog;
|
import com.arialyy.frame.core.AbsDialog;
|
||||||
import com.arialyy.simple.R;
|
import com.arialyy.simple.R;
|
||||||
@ -86,26 +86,26 @@ public class DownloadDialog extends AbsDialog {
|
|||||||
|
|
||||||
private class MyDialogDownloadCallback extends Aria.SimpleSchedulerListener {
|
private class MyDialogDownloadCallback extends Aria.SimpleSchedulerListener {
|
||||||
|
|
||||||
@Override public void onTaskPre(Task task) {
|
@Override public void onTaskPre(DownloadTask task) {
|
||||||
super.onTaskPre(task);
|
super.onTaskPre(task);
|
||||||
mSize.setText(CommonUtil.formatFileSize(task.getFileSize()));
|
mSize.setText(CommonUtil.formatFileSize(task.getFileSize()));
|
||||||
setBtState(false);
|
setBtState(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public void onTaskStop(Task task) {
|
@Override public void onTaskStop(DownloadTask task) {
|
||||||
super.onTaskStop(task);
|
super.onTaskStop(task);
|
||||||
setBtState(true);
|
setBtState(true);
|
||||||
mSpeed.setText("0.0kb/s");
|
mSpeed.setText("0.0kb/s");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public void onTaskCancel(Task task) {
|
@Override public void onTaskCancel(DownloadTask task) {
|
||||||
super.onTaskCancel(task);
|
super.onTaskCancel(task);
|
||||||
setBtState(true);
|
setBtState(true);
|
||||||
mPb.setProgress(0);
|
mPb.setProgress(0);
|
||||||
mSpeed.setText("0.0kb/s");
|
mSpeed.setText("0.0kb/s");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public void onTaskRunning(Task task) {
|
@Override public void onTaskRunning(DownloadTask task) {
|
||||||
super.onTaskRunning(task);
|
super.onTaskRunning(task);
|
||||||
long current = task.getCurrentProgress();
|
long current = task.getCurrentProgress();
|
||||||
long len = task.getFileSize();
|
long len = task.getFileSize();
|
||||||
|
@ -7,10 +7,10 @@ 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.DownloadTarget;
|
import com.arialyy.aria.core.download.DownloadTarget;
|
||||||
import com.arialyy.aria.core.Aria;
|
import com.arialyy.aria.core.Aria;
|
||||||
import com.arialyy.aria.core.DownloadEntity;
|
import com.arialyy.aria.core.download.DownloadEntity;
|
||||||
import com.arialyy.aria.core.task.Task;
|
import com.arialyy.aria.core.download.task.DownloadTask;
|
||||||
import com.arialyy.aria.util.CommonUtil;
|
import com.arialyy.aria.util.CommonUtil;
|
||||||
import com.arialyy.frame.core.AbsFragment;
|
import com.arialyy.frame.core.AbsFragment;
|
||||||
import com.arialyy.simple.R;
|
import com.arialyy.simple.R;
|
||||||
@ -90,26 +90,26 @@ public class DownloadFragment extends AbsFragment<FragmentDownloadBinding> {
|
|||||||
|
|
||||||
private class MyDialogDownloadCallback extends Aria.SimpleSchedulerListener {
|
private class MyDialogDownloadCallback extends Aria.SimpleSchedulerListener {
|
||||||
|
|
||||||
@Override public void onTaskPre(Task task) {
|
@Override public void onTaskPre(DownloadTask task) {
|
||||||
super.onTaskPre(task);
|
super.onTaskPre(task);
|
||||||
mSize.setText(CommonUtil.formatFileSize(task.getFileSize()));
|
mSize.setText(CommonUtil.formatFileSize(task.getFileSize()));
|
||||||
setBtState(false);
|
setBtState(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public void onTaskStop(Task task) {
|
@Override public void onTaskStop(DownloadTask task) {
|
||||||
super.onTaskStop(task);
|
super.onTaskStop(task);
|
||||||
setBtState(true);
|
setBtState(true);
|
||||||
mSpeed.setText("0.0kb/s");
|
mSpeed.setText("0.0kb/s");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public void onTaskCancel(Task task) {
|
@Override public void onTaskCancel(DownloadTask task) {
|
||||||
super.onTaskCancel(task);
|
super.onTaskCancel(task);
|
||||||
setBtState(true);
|
setBtState(true);
|
||||||
mPb.setProgress(0);
|
mPb.setProgress(0);
|
||||||
mSpeed.setText("0.0kb/s");
|
mSpeed.setText("0.0kb/s");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public void onTaskRunning(Task task) {
|
@Override public void onTaskRunning(DownloadTask task) {
|
||||||
super.onTaskRunning(task);
|
super.onTaskRunning(task);
|
||||||
long current = task.getCurrentProgress();
|
long current = task.getCurrentProgress();
|
||||||
long len = task.getFileSize();
|
long len = task.getFileSize();
|
||||||
|
@ -23,7 +23,7 @@ import android.content.IntentFilter;
|
|||||||
import android.os.Environment;
|
import android.os.Environment;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
import com.arialyy.aria.core.Aria;
|
import com.arialyy.aria.core.Aria;
|
||||||
import com.arialyy.aria.core.DownloadEntity;
|
import com.arialyy.aria.core.download.DownloadEntity;
|
||||||
import com.arialyy.aria.util.CommonUtil;
|
import com.arialyy.aria.util.CommonUtil;
|
||||||
import com.arialyy.frame.util.AndroidUtils;
|
import com.arialyy.frame.util.AndroidUtils;
|
||||||
import com.arialyy.frame.util.StringUtil;
|
import com.arialyy.frame.util.StringUtil;
|
||||||
|
@ -5,7 +5,7 @@ import android.support.v7.widget.LinearLayoutManager;
|
|||||||
import android.support.v7.widget.RecyclerView;
|
import android.support.v7.widget.RecyclerView;
|
||||||
import butterknife.Bind;
|
import butterknife.Bind;
|
||||||
import com.arialyy.aria.core.Aria;
|
import com.arialyy.aria.core.Aria;
|
||||||
import com.arialyy.aria.core.task.Task;
|
import com.arialyy.aria.core.download.task.DownloadTask;
|
||||||
import com.arialyy.frame.util.show.L;
|
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;
|
||||||
@ -40,45 +40,45 @@ public class DownloadActivity extends BaseActivity<ActivityDownloadBinding> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private class MySchedulerListener extends Aria.SimpleSchedulerListener {
|
private class MySchedulerListener extends Aria.SimpleSchedulerListener {
|
||||||
@Override public void onTaskPre(Task task) {
|
@Override public void onTaskPre(DownloadTask task) {
|
||||||
super.onTaskPre(task);
|
super.onTaskPre(task);
|
||||||
L.d(TAG, "download pre");
|
L.d(TAG, "download pre");
|
||||||
mAdapter.updateState(task.getDownloadEntity());
|
mAdapter.updateState(task.getDownloadEntity());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public void onTaskStart(Task task) {
|
@Override public void onTaskStart(DownloadTask task) {
|
||||||
super.onTaskStart(task);
|
super.onTaskStart(task);
|
||||||
L.d(TAG, "download start");
|
L.d(TAG, "download start");
|
||||||
mAdapter.updateState(task.getDownloadEntity());
|
mAdapter.updateState(task.getDownloadEntity());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public void onTaskResume(Task task) {
|
@Override public void onTaskResume(DownloadTask task) {
|
||||||
super.onTaskResume(task);
|
super.onTaskResume(task);
|
||||||
L.d(TAG, "download resume");
|
L.d(TAG, "download resume");
|
||||||
mAdapter.updateState(task.getDownloadEntity());
|
mAdapter.updateState(task.getDownloadEntity());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public void onTaskRunning(Task task) {
|
@Override public void onTaskRunning(DownloadTask task) {
|
||||||
super.onTaskRunning(task);
|
super.onTaskRunning(task);
|
||||||
mAdapter.setProgress(task.getDownloadEntity());
|
mAdapter.setProgress(task.getDownloadEntity());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public void onTaskStop(Task task) {
|
@Override public void onTaskStop(DownloadTask task) {
|
||||||
super.onTaskStop(task);
|
super.onTaskStop(task);
|
||||||
mAdapter.updateState(task.getDownloadEntity());
|
mAdapter.updateState(task.getDownloadEntity());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public void onTaskCancel(Task task) {
|
@Override public void onTaskCancel(DownloadTask task) {
|
||||||
super.onTaskCancel(task);
|
super.onTaskCancel(task);
|
||||||
mAdapter.updateState(task.getDownloadEntity());
|
mAdapter.updateState(task.getDownloadEntity());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public void onTaskComplete(Task task) {
|
@Override public void onTaskComplete(DownloadTask task) {
|
||||||
super.onTaskComplete(task);
|
super.onTaskComplete(task);
|
||||||
mAdapter.updateState(task.getDownloadEntity());
|
mAdapter.updateState(task.getDownloadEntity());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public void onTaskFail(Task task) {
|
@Override public void onTaskFail(DownloadTask task) {
|
||||||
super.onTaskFail(task);
|
super.onTaskFail(task);
|
||||||
L.d(TAG, "download fail");
|
L.d(TAG, "download fail");
|
||||||
}
|
}
|
||||||
|
@ -25,7 +25,7 @@ import butterknife.Bind;
|
|||||||
import com.arialyy.absadapter.common.AbsHolder;
|
import com.arialyy.absadapter.common.AbsHolder;
|
||||||
import com.arialyy.absadapter.recycler_view.AbsRVAdapter;
|
import com.arialyy.absadapter.recycler_view.AbsRVAdapter;
|
||||||
import com.arialyy.aria.core.Aria;
|
import com.arialyy.aria.core.Aria;
|
||||||
import com.arialyy.aria.core.DownloadEntity;
|
import com.arialyy.aria.core.download.DownloadEntity;
|
||||||
import com.arialyy.aria.util.CommonUtil;
|
import com.arialyy.aria.util.CommonUtil;
|
||||||
import com.arialyy.simple.R;
|
import com.arialyy.simple.R;
|
||||||
import com.arialyy.simple.widget.HorizontalProgressBarWithNumber;
|
import com.arialyy.simple.widget.HorizontalProgressBarWithNumber;
|
||||||
|
@ -24,7 +24,7 @@ import android.support.v7.widget.Toolbar;
|
|||||||
import android.view.View;
|
import android.view.View;
|
||||||
import butterknife.Bind;
|
import butterknife.Bind;
|
||||||
import com.arialyy.aria.core.Aria;
|
import com.arialyy.aria.core.Aria;
|
||||||
import com.arialyy.aria.core.task.Task;
|
import com.arialyy.aria.core.download.task.DownloadTask;
|
||||||
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.ActivityMultiBinding;
|
import com.arialyy.simple.databinding.ActivityMultiBinding;
|
||||||
@ -89,26 +89,26 @@ public class MultiTaskActivity extends BaseActivity<ActivityMultiBinding> {
|
|||||||
|
|
||||||
private class DownloadListener extends Aria.SimpleSchedulerListener {
|
private class DownloadListener extends Aria.SimpleSchedulerListener {
|
||||||
|
|
||||||
@Override public void onTaskStart(Task task) {
|
@Override public void onTaskStart(DownloadTask task) {
|
||||||
super.onTaskStart(task);
|
super.onTaskStart(task);
|
||||||
mAdapter.updateBtState(task.getDownloadUrl(), false);
|
mAdapter.updateBtState(task.getDownloadUrl(), false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public void onTaskRunning(Task task) {
|
@Override public void onTaskRunning(DownloadTask task) {
|
||||||
super.onTaskRunning(task);
|
super.onTaskRunning(task);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public void onTaskResume(Task task) {
|
@Override public void onTaskResume(DownloadTask task) {
|
||||||
super.onTaskResume(task);
|
super.onTaskResume(task);
|
||||||
mAdapter.updateBtState(task.getDownloadUrl(), false);
|
mAdapter.updateBtState(task.getDownloadUrl(), false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public void onTaskStop(Task task) {
|
@Override public void onTaskStop(DownloadTask task) {
|
||||||
super.onTaskStop(task);
|
super.onTaskStop(task);
|
||||||
mAdapter.updateBtState(task.getDownloadUrl(), true);
|
mAdapter.updateBtState(task.getDownloadUrl(), true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public void onTaskComplete(Task task) {
|
@Override public void onTaskComplete(DownloadTask task) {
|
||||||
super.onTaskComplete(task);
|
super.onTaskComplete(task);
|
||||||
mAdapter.updateBtState(task.getDownloadUrl(), true);
|
mAdapter.updateBtState(task.getDownloadUrl(), true);
|
||||||
}
|
}
|
||||||
|
@ -5,7 +5,7 @@ import android.content.Context;
|
|||||||
import android.os.Environment;
|
import android.os.Environment;
|
||||||
import android.support.v4.app.NotificationCompat;
|
import android.support.v4.app.NotificationCompat;
|
||||||
import com.arialyy.aria.core.Aria;
|
import com.arialyy.aria.core.Aria;
|
||||||
import com.arialyy.aria.core.task.Task;
|
import com.arialyy.aria.core.download.task.DownloadTask;
|
||||||
import com.arialyy.simple.R;
|
import com.arialyy.simple.R;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -59,19 +59,19 @@ public class SimpleNotification {
|
|||||||
mManager = manager;
|
mManager = manager;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public void onTaskStart(Task task) {
|
@Override public void onTaskStart(DownloadTask task) {
|
||||||
super.onTaskStart(task);
|
super.onTaskStart(task);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public void onTaskPre(Task task) {
|
@Override public void onTaskPre(DownloadTask task) {
|
||||||
super.onTaskPre(task);
|
super.onTaskPre(task);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public void onTaskStop(Task task) {
|
@Override public void onTaskStop(DownloadTask task) {
|
||||||
super.onTaskStop(task);
|
super.onTaskStop(task);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public void onTaskRunning(Task task) {
|
@Override public void onTaskRunning(DownloadTask task) {
|
||||||
super.onTaskRunning(task);
|
super.onTaskRunning(task);
|
||||||
long len = task.getFileSize();
|
long len = task.getFileSize();
|
||||||
int p = (int) (task.getCurrentProgress() * 100 / len);
|
int p = (int) (task.getCurrentProgress() * 100 / len);
|
||||||
@ -81,7 +81,7 @@ public class SimpleNotification {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public void onTaskComplete(Task task) {
|
@Override public void onTaskComplete(DownloadTask task) {
|
||||||
super.onTaskComplete(task);
|
super.onTaskComplete(task);
|
||||||
if (mBuilder != null) {
|
if (mBuilder != null) {
|
||||||
mBuilder.setProgress(100, 100, false);
|
mBuilder.setProgress(100, 100, false);
|
||||||
@ -89,7 +89,7 @@ public class SimpleNotification {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public void onTaskCancel(Task task) {
|
@Override public void onTaskCancel(DownloadTask task) {
|
||||||
super.onTaskCancel(task);
|
super.onTaskCancel(task);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -9,10 +9,10 @@ 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.DownloadTarget;
|
import com.arialyy.aria.core.download.DownloadTarget;
|
||||||
import com.arialyy.aria.core.Aria;
|
import com.arialyy.aria.core.Aria;
|
||||||
import com.arialyy.aria.core.DownloadEntity;
|
import com.arialyy.aria.core.download.DownloadEntity;
|
||||||
import com.arialyy.aria.core.task.Task;
|
import com.arialyy.aria.core.download.task.DownloadTask;
|
||||||
import com.arialyy.aria.util.CommonUtil;
|
import com.arialyy.aria.util.CommonUtil;
|
||||||
import com.arialyy.frame.core.AbsPopupWindow;
|
import com.arialyy.frame.core.AbsPopupWindow;
|
||||||
import com.arialyy.simple.R;
|
import com.arialyy.simple.R;
|
||||||
@ -88,26 +88,26 @@ public class DownloadPopupWindow extends AbsPopupWindow {
|
|||||||
|
|
||||||
private class MyDialogDownloadCallback extends Aria.SimpleSchedulerListener {
|
private class MyDialogDownloadCallback extends Aria.SimpleSchedulerListener {
|
||||||
|
|
||||||
@Override public void onTaskPre(Task task) {
|
@Override public void onTaskPre(DownloadTask task) {
|
||||||
super.onTaskPre(task);
|
super.onTaskPre(task);
|
||||||
mSize.setText(CommonUtil.formatFileSize(task.getFileSize()));
|
mSize.setText(CommonUtil.formatFileSize(task.getFileSize()));
|
||||||
setBtState(false);
|
setBtState(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public void onTaskStop(Task task) {
|
@Override public void onTaskStop(DownloadTask task) {
|
||||||
super.onTaskStop(task);
|
super.onTaskStop(task);
|
||||||
setBtState(true);
|
setBtState(true);
|
||||||
mSpeed.setText("0.0kb/s");
|
mSpeed.setText("0.0kb/s");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public void onTaskCancel(Task task) {
|
@Override public void onTaskCancel(DownloadTask task) {
|
||||||
super.onTaskCancel(task);
|
super.onTaskCancel(task);
|
||||||
setBtState(true);
|
setBtState(true);
|
||||||
mPb.setProgress(0);
|
mPb.setProgress(0);
|
||||||
mSpeed.setText("0.0kb/s");
|
mSpeed.setText("0.0kb/s");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public void onTaskRunning(Task task) {
|
@Override public void onTaskRunning(DownloadTask task) {
|
||||||
super.onTaskRunning(task);
|
super.onTaskRunning(task);
|
||||||
long current = task.getCurrentProgress();
|
long current = task.getCurrentProgress();
|
||||||
long len = task.getFileSize();
|
long len = task.getFileSize();
|
||||||
|
@ -30,10 +30,10 @@ 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.DownloadTarget;
|
import com.arialyy.aria.core.download.DownloadTarget;
|
||||||
import com.arialyy.aria.core.Aria;
|
import com.arialyy.aria.core.Aria;
|
||||||
import com.arialyy.aria.core.DownloadEntity;
|
import com.arialyy.aria.core.download.DownloadEntity;
|
||||||
import com.arialyy.aria.core.task.Task;
|
import com.arialyy.aria.core.download.task.DownloadTask;
|
||||||
import com.arialyy.aria.util.CommonUtil;
|
import com.arialyy.aria.util.CommonUtil;
|
||||||
import com.arialyy.frame.util.show.L;
|
import com.arialyy.frame.util.show.L;
|
||||||
import com.arialyy.simple.R;
|
import com.arialyy.simple.R;
|
||||||
@ -76,7 +76,7 @@ public class SingleTaskActivity extends BaseActivity<ActivitySingleBinding> {
|
|||||||
super.handleMessage(msg);
|
super.handleMessage(msg);
|
||||||
switch (msg.what) {
|
switch (msg.what) {
|
||||||
case DOWNLOAD_RUNNING:
|
case DOWNLOAD_RUNNING:
|
||||||
Task task = (Task) msg.obj;
|
DownloadTask task = (DownloadTask) msg.obj;
|
||||||
long current = task.getCurrentProgress();
|
long current = task.getCurrentProgress();
|
||||||
long len = task.getFileSize();
|
long len = task.getFileSize();
|
||||||
if (len == 0) {
|
if (len == 0) {
|
||||||
@ -208,33 +208,33 @@ public class SingleTaskActivity extends BaseActivity<ActivitySingleBinding> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private class MySchedulerListener extends Aria.SimpleSchedulerListener {
|
private class MySchedulerListener extends Aria.SimpleSchedulerListener {
|
||||||
@Override public void onTaskStart(Task task) {
|
@Override public void onTaskStart(DownloadTask task) {
|
||||||
mUpdateHandler.obtainMessage(DOWNLOAD_PRE, task.getDownloadEntity().getFileSize())
|
mUpdateHandler.obtainMessage(DOWNLOAD_PRE, task.getDownloadEntity().getFileSize())
|
||||||
.sendToTarget();
|
.sendToTarget();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public void onTaskResume(Task task) {
|
@Override public void onTaskResume(DownloadTask task) {
|
||||||
super.onTaskResume(task);
|
super.onTaskResume(task);
|
||||||
mUpdateHandler.obtainMessage(DOWNLOAD_PRE, task.getFileSize()).sendToTarget();
|
mUpdateHandler.obtainMessage(DOWNLOAD_PRE, task.getFileSize()).sendToTarget();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public void onTaskStop(Task task) {
|
@Override public void onTaskStop(DownloadTask task) {
|
||||||
mUpdateHandler.sendEmptyMessage(DOWNLOAD_STOP);
|
mUpdateHandler.sendEmptyMessage(DOWNLOAD_STOP);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public void onTaskCancel(Task task) {
|
@Override public void onTaskCancel(DownloadTask task) {
|
||||||
mUpdateHandler.sendEmptyMessage(DOWNLOAD_CANCEL);
|
mUpdateHandler.sendEmptyMessage(DOWNLOAD_CANCEL);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public void onTaskFail(Task task) {
|
@Override public void onTaskFail(DownloadTask task) {
|
||||||
mUpdateHandler.sendEmptyMessage(DOWNLOAD_FAILE);
|
mUpdateHandler.sendEmptyMessage(DOWNLOAD_FAILE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public void onTaskComplete(Task task) {
|
@Override public void onTaskComplete(DownloadTask task) {
|
||||||
mUpdateHandler.sendEmptyMessage(DOWNLOAD_COMPLETE);
|
mUpdateHandler.sendEmptyMessage(DOWNLOAD_COMPLETE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public void onTaskRunning(Task task) {
|
@Override public void onTaskRunning(DownloadTask task) {
|
||||||
mUpdateHandler.obtainMessage(DOWNLOAD_RUNNING, task).sendToTarget();
|
mUpdateHandler.obtainMessage(DOWNLOAD_RUNNING, task).sendToTarget();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
36
app/src/main/java/com/arialyy/simple/upload.java
Normal file
36
app/src/main/java/com/arialyy/simple/upload.java
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
package com.arialyy.simple;
|
||||||
|
|
||||||
|
import android.view.View;
|
||||||
|
import com.arialyy.aria.core.upload.IUploadListener;
|
||||||
|
import com.arialyy.aria.core.upload.UploadEntity;
|
||||||
|
import com.arialyy.aria.core.upload.UploadTaskEntity;
|
||||||
|
import com.arialyy.aria.core.upload.UploadUtil;
|
||||||
|
import com.arialyy.simple.base.BaseActivity;
|
||||||
|
import com.arialyy.simple.databinding.ActivityUploadBinding;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by Aria.Lao on 2017/2/9.
|
||||||
|
*/
|
||||||
|
|
||||||
|
public class upload extends BaseActivity<ActivityUploadBinding>{
|
||||||
|
@Override protected int setLayoutId() {
|
||||||
|
return R.layout.activity_upload;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void onClick(View view){
|
||||||
|
UploadEntity entity = new UploadEntity();
|
||||||
|
entity.setFilePath("/sdcard/Download/test.pdf");
|
||||||
|
entity.setFileName("test.pdf");
|
||||||
|
UploadTaskEntity taskEntity = new UploadTaskEntity(entity);
|
||||||
|
taskEntity.uploadUrl = "http://172.21.1.160:8080/upload";
|
||||||
|
taskEntity.uploadKey = "file";
|
||||||
|
UploadUtil util = new UploadUtil(taskEntity, new IUploadListener() {
|
||||||
|
@Override public void onFail() {
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
util.start();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
22
app/src/main/res/layout/activity_upload.xml
Normal file
22
app/src/main/res/layout/activity_upload.xml
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<layout xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:orientation="vertical"
|
||||||
|
>
|
||||||
|
<include layout="@layout/layout_bar"/>
|
||||||
|
|
||||||
|
<Button
|
||||||
|
android:id="@+id/single_task"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:onClick="onClick"
|
||||||
|
android:text="上传"
|
||||||
|
style="?buttonBarButtonStyle"
|
||||||
|
/>
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
</layout>
|
Reference in New Issue
Block a user