修复下载失败重试不起作用的问题

pull/330/head
AriaLyy 8 years ago
parent c3fc725089
commit 5d3c0a2b91
  1. 2
      Aria/src/main/java/com/arialyy/aria/core/queue/pool/ExecutePool.java
  2. 16
      Aria/src/main/java/com/arialyy/aria/core/scheduler/DownloadSchedulers.java
  3. 17
      Aria/src/main/java/com/arialyy/aria/core/scheduler/UploadSchedulers.java
  4. 2
      Aria/src/main/java/com/arialyy/aria/core/upload/UploadUtil.java
  5. 1
      app/src/main/AndroidManifest.xml
  6. 31
      app/src/main/java/com/arialyy/simple/download/SingleTaskActivity.java
  7. 12
      app/src/main/java/com/arialyy/simple/upload/UploadActivity.java

@ -97,7 +97,6 @@ public class ExecutePool<TASK extends ITask> implements IPool<TASK> {
boolean s = mExecuteQueue.offer(newTask);
Log.w(TAG, "任务添加" + (s ? "成功" : "失败,【" + url + "】"));
if (s) {
newTask.start();
mExecuteArray.put(CommonUtil.keyToHashKey(url), newTask);
}
return s;
@ -114,7 +113,6 @@ public class ExecutePool<TASK extends ITask> implements IPool<TASK> {
return false;
}
oldTask.stop();
// wait(200);
String key = CommonUtil.keyToHashKey(oldTask.getKey());
mExecuteArray.remove(key);
} catch (InterruptedException e) {

@ -34,8 +34,8 @@ import java.util.concurrent.ConcurrentHashMap;
*/
public class DownloadSchedulers implements ISchedulers<DownloadTask> {
private static final String TAG = "DownloadSchedulers";
private static final Object LOCK = new Object();
private static final String TAG = "DownloadSchedulers";
private static final Object LOCK = new Object();
private static volatile DownloadSchedulers INSTANCE = null;
/**
@ -94,8 +94,8 @@ public class DownloadSchedulers implements ISchedulers<DownloadTask> {
startNextTask();
break;
case FAIL:
mQueue.removeTask(entity);
handleFailTask(entity);
//mQueue.removeTask(entity);
handleFailTask(task);
break;
}
return true;
@ -156,9 +156,9 @@ public class DownloadSchedulers implements ISchedulers<DownloadTask> {
/**
* 处理下载任务下载失败的情形
*
* @param entity 失败实体
* @param task 下载任务
*/
private void handleFailTask(final DownloadEntity entity) {
private void handleFailTask(final DownloadTask task) {
final Configuration config = Configuration.getInstance();
CountDownTimer timer = new CountDownTimer(config.getReTryInterval(), 1000) {
@Override public void onTick(long millisUntilFinished) {
@ -166,7 +166,8 @@ public class DownloadSchedulers implements ISchedulers<DownloadTask> {
}
@Override public void onFinish() {
if (entity.getFailNum() <= config.getReTryNum()) {
DownloadEntity entity = task.getDownloadEntity();
if (entity.getFailNum() < config.getReTryNum()) {
DownloadTask task = mQueue.getTask(entity);
mQueue.reTryStart(task);
try {
@ -175,6 +176,7 @@ public class DownloadSchedulers implements ISchedulers<DownloadTask> {
e.printStackTrace();
}
} else {
mQueue.removeTask(entity);
startNextTask();
}
}

@ -33,10 +33,12 @@ import java.util.concurrent.ConcurrentHashMap;
* 上传任务调度器
*/
public class UploadSchedulers implements ISchedulers<UploadTask> {
private static final String TAG = "UploadSchedulers";
private static final Object LOCK = new Object();
private static volatile UploadSchedulers INSTANCE = null;
private Map<String, OnSchedulerListener<UploadTask>> mSchedulerListeners =
private static final String TAG =
"UploadSchedulers";
private static final Object LOCK =
new Object();
private static volatile UploadSchedulers INSTANCE = null;
private Map<String, OnSchedulerListener<UploadTask>> mSchedulerListeners =
new ConcurrentHashMap<>();
private UploadTaskQueue mQueue;
@ -68,7 +70,7 @@ public class UploadSchedulers implements ISchedulers<UploadTask> {
}
}
private void handleFailTask(final UploadEntity entity) {
private void handleFailTask(final UploadTask task) {
final Configuration config = Configuration.getInstance();
CountDownTimer timer = new CountDownTimer(config.getReTryInterval(), 1000) {
@Override public void onTick(long millisUntilFinished) {
@ -76,6 +78,7 @@ public class UploadSchedulers implements ISchedulers<UploadTask> {
}
@Override public void onFinish() {
UploadEntity entity = task.getUploadEntity();
if (entity.getFailNum() <= config.getReTryNum()) {
UploadTask task = mQueue.getTask(entity);
mQueue.reTryStart(task);
@ -85,6 +88,7 @@ public class UploadSchedulers implements ISchedulers<UploadTask> {
e.printStackTrace();
}
} else {
mQueue.removeTask(entity);
startNextTask();
}
}
@ -176,8 +180,7 @@ public class UploadSchedulers implements ISchedulers<UploadTask> {
startNextTask();
break;
case FAIL:
mQueue.removeTask(entity);
handleFailTask(entity);
handleFailTask(task);
break;
}
return true;

@ -178,7 +178,7 @@ public class UploadUtil implements Runnable {
}
outputStream.flush();
outputStream.close();
//outputStream.close();
inputStream.close();
writer.append(LINE_END);
writer.flush();

@ -23,6 +23,7 @@
</intent-filter>
</activity>
<activity android:name=".download.DownloadActivity"/>
<activity android:name=".upload.UploadActivity"/>
<activity android:name=".download.SingleTaskActivity"/>
<activity android:name=".download.multi_download.MultiTaskActivity"/>

@ -42,26 +42,27 @@ import com.arialyy.simple.databinding.ActivitySingleBinding;
import com.arialyy.simple.widget.HorizontalProgressBarWithNumber;
public class SingleTaskActivity extends BaseActivity<ActivitySingleBinding> {
public static final int DOWNLOAD_PRE = 0x01;
public static final int DOWNLOAD_STOP = 0x02;
public static final int DOWNLOAD_FAILE = 0x03;
public static final int DOWNLOAD_CANCEL = 0x04;
public static final int DOWNLOAD_RESUME = 0x05;
public static final int DOWNLOAD_PRE = 0x01;
public static final int DOWNLOAD_STOP = 0x02;
public static final int DOWNLOAD_FAILE = 0x03;
public static final int DOWNLOAD_CANCEL = 0x04;
public static final int DOWNLOAD_RESUME = 0x05;
public static final int DOWNLOAD_COMPLETE = 0x06;
public static final int DOWNLOAD_RUNNING = 0x07;
public static final int DOWNLOAD_RUNNING = 0x07;
private static final String DOWNLOAD_URL =
//"http://kotlinlang.org/docs/kotlin-docs.pdf";
"https://atom-installer.github.com/v1.13.0/AtomSetup.exe?s=1484074138&ext=.exe";
//"https://atom-installer.github.com/v1.13.0/AtomSetup.exe?s=1484074138&ext=.exe";
"http://1_static.gaoshouyou.com/d/22/94/822260b849944492caadd2983f9bb624.apk";
@Bind(R.id.progressBar) HorizontalProgressBarWithNumber mPb;
@Bind(R.id.start) Button mStart;
@Bind(R.id.stop) Button mStop;
@Bind(R.id.cancel) Button mCancel;
@Bind(R.id.size) TextView mSize;
@Bind(R.id.toolbar) Toolbar toolbar;
@Bind(R.id.speed) TextView mSpeed;
@Bind(R.id.img) ImageView mImg;
private DownloadEntity mEntity;
@Bind(R.id.start) Button mStart;
@Bind(R.id.stop) Button mStop;
@Bind(R.id.cancel) Button mCancel;
@Bind(R.id.size) TextView mSize;
@Bind(R.id.toolbar) Toolbar toolbar;
@Bind(R.id.speed) TextView mSpeed;
@Bind(R.id.img) ImageView mImg;
private DownloadEntity mEntity;
private BroadcastReceiver mReceiver = new BroadcastReceiver() {
@Override public void onReceive(Context context, Intent intent) {
String action = intent.getAction();

@ -141,12 +141,12 @@ public class UploadActivity extends BaseActivity<ActivityUploadMeanBinding> {
}
@OnClick(R.id.upload) void upload() {
//Aria.upload(this)
// .load(FILE_PATH)
// .setUploadUrl("http://172.18.104.50:8080/upload/sign_file")
// .setAttachment("file")
// .start();
test();
Aria.upload(this)
.load(FILE_PATH)
.setUploadUrl("http://192.168.1.8:8080/upload/sign_file")
.setAttachment("file")
.start();
//test();
}
@OnClick(R.id.stop) void stop() {

Loading…
Cancel
Save