fix bug fix bug https://github.com/AriaLyy/Aria/issues/272
This commit is contained in:
@@ -34,8 +34,8 @@ import java.util.HashSet;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Properties;
|
import java.util.Properties;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.Timer;
|
import java.util.concurrent.ScheduledThreadPoolExecutor;
|
||||||
import java.util.TimerTask;
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by AriaL on 2017/7/1.
|
* Created by AriaL on 2017/7/1.
|
||||||
@@ -67,7 +67,7 @@ public abstract class AbsFileer<ENTITY extends AbsNormalEntity, TASK_ENTITY exte
|
|||||||
private int mCompleteThreadNum;
|
private int mCompleteThreadNum;
|
||||||
private SparseArray<AbsThreadTask> mTask = new SparseArray<>();
|
private SparseArray<AbsThreadTask> mTask = new SparseArray<>();
|
||||||
|
|
||||||
private Timer mTimer;
|
private ScheduledThreadPoolExecutor mTimer;
|
||||||
@Deprecated private File mConfigFile;
|
@Deprecated private File mConfigFile;
|
||||||
/**
|
/**
|
||||||
* 进度刷新间隔
|
* 进度刷新间隔
|
||||||
@@ -190,8 +190,8 @@ public abstract class AbsFileer<ENTITY extends AbsNormalEntity, TASK_ENTITY exte
|
|||||||
* 启动进度获取定时器
|
* 启动进度获取定时器
|
||||||
*/
|
*/
|
||||||
private synchronized void startTimer() {
|
private synchronized void startTimer() {
|
||||||
mTimer = new Timer(true);
|
mTimer = new ScheduledThreadPoolExecutor(1);
|
||||||
mTimer.schedule(new TimerTask() {
|
mTimer.scheduleWithFixedDelay(new Runnable() {
|
||||||
@Override public void run() {
|
@Override public void run() {
|
||||||
if (mConstance.isComplete()
|
if (mConstance.isComplete()
|
||||||
|| mConstance.isStop()
|
|| mConstance.isStop()
|
||||||
@@ -202,14 +202,12 @@ public abstract class AbsFileer<ENTITY extends AbsNormalEntity, TASK_ENTITY exte
|
|||||||
mListener.onProgress(mConstance.CURRENT_LOCATION);
|
mListener.onProgress(mConstance.CURRENT_LOCATION);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}, 0, mUpdateInterval);
|
}, 0, mUpdateInterval, TimeUnit.MILLISECONDS);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected synchronized void closeTimer() {
|
protected synchronized void closeTimer() {
|
||||||
if (mTimer != null) {
|
if (mTimer != null && !mTimer.isShutdown()) {
|
||||||
mTimer.purge();
|
mTimer.shutdown();
|
||||||
mTimer.cancel();
|
|
||||||
mTimer = null;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -37,12 +37,12 @@ class BaseDListener<ENTITY extends AbsEntity, TASK_ENTITY extends AbsTaskEntity<
|
|||||||
private static final String TAG = "BaseDListener";
|
private static final String TAG = "BaseDListener";
|
||||||
WeakReference<Handler> outHandler;
|
WeakReference<Handler> outHandler;
|
||||||
private int RUN_SAVE_INTERVAL = 5 * 1000; //5s保存一次下载中的进度
|
private int RUN_SAVE_INTERVAL = 5 * 1000; //5s保存一次下载中的进度
|
||||||
private long mLastLen = 0; //上一次发送长度
|
private long mLastLen; //上一次发送长度
|
||||||
private boolean isFirst = true;
|
private boolean isFirst = true;
|
||||||
protected ENTITY mEntity;
|
protected ENTITY mEntity;
|
||||||
protected TASK_ENTITY mTaskEntity;
|
protected TASK_ENTITY mTaskEntity;
|
||||||
private TASK mTask;
|
private TASK mTask;
|
||||||
private boolean isConvertSpeed = false;
|
private boolean isConvertSpeed;
|
||||||
private long mLastSaveTime;
|
private long mLastSaveTime;
|
||||||
private long mUpdateInterval;
|
private long mUpdateInterval;
|
||||||
|
|
||||||
|
|||||||
@@ -18,7 +18,6 @@ package com.arialyy.aria.core.download;
|
|||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
import android.os.Looper;
|
import android.os.Looper;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
import android.util.Log;
|
|
||||||
import com.arialyy.aria.core.AriaManager;
|
import com.arialyy.aria.core.AriaManager;
|
||||||
import com.arialyy.aria.core.download.downloader.DownloadGroupUtil;
|
import com.arialyy.aria.core.download.downloader.DownloadGroupUtil;
|
||||||
import com.arialyy.aria.core.download.downloader.FtpDirDownloadUtil;
|
import com.arialyy.aria.core.download.downloader.FtpDirDownloadUtil;
|
||||||
@@ -26,7 +25,6 @@ import com.arialyy.aria.core.download.downloader.IDownloadGroupListener;
|
|||||||
import com.arialyy.aria.core.inf.AbsGroupTask;
|
import com.arialyy.aria.core.inf.AbsGroupTask;
|
||||||
import com.arialyy.aria.core.inf.AbsTaskEntity;
|
import com.arialyy.aria.core.inf.AbsTaskEntity;
|
||||||
import com.arialyy.aria.core.scheduler.ISchedulers;
|
import com.arialyy.aria.core.scheduler.ISchedulers;
|
||||||
import com.arialyy.aria.util.ALog;
|
|
||||||
import com.arialyy.aria.util.CheckUtil;
|
import com.arialyy.aria.util.CheckUtil;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -74,12 +72,7 @@ public class DownloadGroupTask extends AbsGroupTask<DownloadGroupEntity, Downloa
|
|||||||
* @param schedulers {@link ISchedulers}
|
* @param schedulers {@link ISchedulers}
|
||||||
*/
|
*/
|
||||||
public DownloadGroupTask.Builder setOutHandler(ISchedulers schedulers) {
|
public DownloadGroupTask.Builder setOutHandler(ISchedulers schedulers) {
|
||||||
try {
|
outHandler = new Handler(Looper.getMainLooper(), schedulers);
|
||||||
outHandler = new Handler(schedulers);
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
outHandler = new Handler(Looper.getMainLooper(), schedulers);
|
|
||||||
}
|
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -94,12 +94,7 @@ public class DownloadTask extends AbsNormalTask<DownloadEntity, DownloadTaskEnti
|
|||||||
* @param schedulers {@link ISchedulers}
|
* @param schedulers {@link ISchedulers}
|
||||||
*/
|
*/
|
||||||
public Builder setOutHandler(ISchedulers schedulers) {
|
public Builder setOutHandler(ISchedulers schedulers) {
|
||||||
try {
|
outHandler = new Handler(Looper.getMainLooper(), schedulers);
|
||||||
outHandler = new Handler(schedulers);
|
|
||||||
} catch (Exception e) {
|
|
||||||
ALog.w(TAG, ALog.getExceptionString(e));
|
|
||||||
outHandler = new Handler(Looper.getMainLooper(), schedulers);
|
|
||||||
}
|
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -28,9 +28,9 @@ import com.arialyy.aria.util.NetUtils;
|
|||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.Timer;
|
|
||||||
import java.util.TimerTask;
|
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
|
import java.util.concurrent.ScheduledThreadPoolExecutor;
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by AriaL on 2017/6/30.
|
* Created by AriaL on 2017/6/30.
|
||||||
@@ -56,7 +56,7 @@ public abstract class AbsGroupUtil implements IUtil, Runnable {
|
|||||||
protected IDownloadGroupListener mListener;
|
protected IDownloadGroupListener mListener;
|
||||||
DownloadGroupTaskEntity mGTEntity;
|
DownloadGroupTaskEntity mGTEntity;
|
||||||
private boolean isRunning = false;
|
private boolean isRunning = false;
|
||||||
private Timer mTimer;
|
private ScheduledThreadPoolExecutor mTimer;
|
||||||
/**
|
/**
|
||||||
* 保存所有没有下载完成的任务,key为下载地址
|
* 保存所有没有下载完成的任务,key为下载地址
|
||||||
*/
|
*/
|
||||||
@@ -320,14 +320,9 @@ public abstract class AbsGroupUtil implements IUtil, Runnable {
|
|||||||
mFailMap.clear();
|
mFailMap.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
void closeTimer() {
|
synchronized void closeTimer() {
|
||||||
synchronized (LOCK) {
|
if (mTimer != null && !mTimer.isShutdown()) {
|
||||||
isRunning = false;
|
mTimer.shutdown();
|
||||||
if (mTimer != null) {
|
|
||||||
mTimer.purge();
|
|
||||||
mTimer.cancel();
|
|
||||||
mTimer = null;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -345,10 +340,10 @@ public abstract class AbsGroupUtil implements IUtil, Runnable {
|
|||||||
startTimer();
|
startTimer();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void startTimer() {
|
private synchronized void startTimer() {
|
||||||
isRunning = true;
|
isRunning = true;
|
||||||
mTimer = new Timer(true);
|
mTimer = new ScheduledThreadPoolExecutor(1);
|
||||||
mTimer.schedule(new TimerTask() {
|
mTimer.scheduleWithFixedDelay(new Runnable() {
|
||||||
@Override public void run() {
|
@Override public void run() {
|
||||||
if (!isRunning) {
|
if (!isRunning) {
|
||||||
closeTimer();
|
closeTimer();
|
||||||
@@ -365,7 +360,7 @@ public abstract class AbsGroupUtil implements IUtil, Runnable {
|
|||||||
mListener.onProgress(t);
|
mListener.onProgress(t);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}, 0, mUpdateInterval);
|
}, 0, mUpdateInterval, TimeUnit.MILLISECONDS);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -398,9 +393,9 @@ public abstract class AbsGroupUtil implements IUtil, Runnable {
|
|||||||
private DownloadEntity subEntity;
|
private DownloadEntity subEntity;
|
||||||
private int RUN_SAVE_INTERVAL = 5 * 1000; //5s保存一次下载中的进度
|
private int RUN_SAVE_INTERVAL = 5 * 1000; //5s保存一次下载中的进度
|
||||||
private long lastSaveTime;
|
private long lastSaveTime;
|
||||||
private long lastLen = 0;
|
private long lastLen;
|
||||||
private Timer timer;
|
private ScheduledThreadPoolExecutor timer;
|
||||||
private boolean isNotNetRetry = false;
|
private boolean isNotNetRetry;
|
||||||
|
|
||||||
ChildDownloadListener(DownloadTaskEntity entity) {
|
ChildDownloadListener(DownloadTaskEntity entity) {
|
||||||
subTaskEntity = entity;
|
subTaskEntity = entity;
|
||||||
@@ -523,18 +518,16 @@ public abstract class AbsGroupUtil implements IUtil, Runnable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void reStartTask(final Downloader dt) {
|
private void reStartTask(final Downloader dt) {
|
||||||
if (timer != null) {
|
if (timer == null || timer.isShutdown()) {
|
||||||
timer.purge();
|
timer = new ScheduledThreadPoolExecutor(1);
|
||||||
timer.cancel();
|
|
||||||
}
|
}
|
||||||
timer = new Timer();
|
timer.schedule(new Runnable() {
|
||||||
timer.schedule(new TimerTask() {
|
|
||||||
@Override public void run() {
|
@Override public void run() {
|
||||||
if (dt != null) {
|
if (dt != null) {
|
||||||
dt.retryTask();
|
dt.retryTask();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}, 5000);
|
}, 5, TimeUnit.SECONDS);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void handleSpeed(long speed) {
|
private void handleSpeed(long speed) {
|
||||||
|
|||||||
@@ -1,8 +1,11 @@
|
|||||||
## 开发日志
|
## 开发日志
|
||||||
+ v_3.4.17
|
+ v_3.5
|
||||||
- fix bug https://github.com/AriaLyy/Aria/issues/302
|
- fix bug https://github.com/AriaLyy/Aria/issues/302
|
||||||
- fix bug https://github.com/AriaLyy/Aria/issues/283
|
- fix bug https://github.com/AriaLyy/Aria/issues/283
|
||||||
- 现在,停止所有任务,未开始的任务状态将变为停止
|
- fix bug https://github.com/AriaLyy/Aria/issues/305
|
||||||
|
- fix bug https://github.com/AriaLyy/Aria/issues/306
|
||||||
|
- fix bug https://github.com/AriaLyy/Aria/issues/272 (现在,停止所有任务,未开始的任务状态将变为停止)
|
||||||
|
- fix bug https://github.com/AriaLyy/Aria/issues/277
|
||||||
- 优化停止任务的速度
|
- 优化停止任务的速度
|
||||||
+ v_3.4.12
|
+ v_3.4.12
|
||||||
- fix bug https://github.com/AriaLyy/Aria/issues/286
|
- fix bug https://github.com/AriaLyy/Aria/issues/286
|
||||||
|
|||||||
@@ -17,9 +17,9 @@
|
|||||||
<!--android:name=".test.AnyRunActivity"-->
|
<!--android:name=".test.AnyRunActivity"-->
|
||||||
<!--android:name=".test.TestFTPActivity"-->
|
<!--android:name=".test.TestFTPActivity"-->
|
||||||
<!--android:name=".download.group.DownloadGroupActivity"-->
|
<!--android:name=".download.group.DownloadGroupActivity"-->
|
||||||
<!--android:name=".MainActivity"-->
|
<!--android:name=".download.SingleTaskActivity"-->
|
||||||
<activity
|
<activity
|
||||||
android:name=".download.SingleTaskActivity"
|
android:name=".MainActivity"
|
||||||
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"/>
|
||||||
@@ -29,7 +29,7 @@
|
|||||||
</activity>
|
</activity>
|
||||||
|
|
||||||
<activity android:name=".download.DownloadActivity"/>
|
<activity android:name=".download.DownloadActivity"/>
|
||||||
<!--<activity android:name=".download.SingleTaskActivity"/>-->
|
<activity android:name=".download.SingleTaskActivity"/>
|
||||||
<activity android:name=".download.multi_download.MultiTaskActivity"/>
|
<activity android:name=".download.multi_download.MultiTaskActivity"/>
|
||||||
<activity android:name=".download.fragment_download.FragmentActivity"/>
|
<activity android:name=".download.fragment_download.FragmentActivity"/>
|
||||||
<activity android:name=".download.multi_download.MultiDownloadActivity"/>
|
<activity android:name=".download.multi_download.MultiDownloadActivity"/>
|
||||||
|
|||||||
@@ -21,7 +21,6 @@ import com.arialyy.aria.core.inf.AbsNormalTask;
|
|||||||
import com.arialyy.aria.core.inf.IUploadListener;
|
import com.arialyy.aria.core.inf.IUploadListener;
|
||||||
import com.arialyy.aria.core.scheduler.ISchedulers;
|
import com.arialyy.aria.core.scheduler.ISchedulers;
|
||||||
import com.arialyy.aria.core.upload.uploader.SimpleUploadUtil;
|
import com.arialyy.aria.core.upload.uploader.SimpleUploadUtil;
|
||||||
import com.arialyy.aria.util.ALog;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by lyy on 2017/2/23.
|
* Created by lyy on 2017/2/23.
|
||||||
@@ -53,12 +52,7 @@ public class UploadTask extends AbsNormalTask<UploadEntity, UploadTaskEntity> {
|
|||||||
private UploadTaskEntity mTaskEntity;
|
private UploadTaskEntity mTaskEntity;
|
||||||
|
|
||||||
public void setOutHandler(ISchedulers outHandler) {
|
public void setOutHandler(ISchedulers outHandler) {
|
||||||
try {
|
mOutHandler = new Handler(Looper.getMainLooper(), outHandler);
|
||||||
mOutHandler = new Handler(outHandler);
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
mOutHandler = new Handler(Looper.getMainLooper(), outHandler);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setUploadTaskEntity(UploadTaskEntity taskEntity) {
|
public void setUploadTaskEntity(UploadTaskEntity taskEntity) {
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ task clean(type: Delete) {
|
|||||||
ext {
|
ext {
|
||||||
userOrg = 'arialyy'
|
userOrg = 'arialyy'
|
||||||
groupId = 'com.arialyy.aria'
|
groupId = 'com.arialyy.aria'
|
||||||
publishVersion = '3.4.16'
|
publishVersion = '3.5_dev1'
|
||||||
// publishVersion = '1.0.3' //FTP插件
|
// publishVersion = '1.0.3' //FTP插件
|
||||||
repoName='maven'
|
repoName='maven'
|
||||||
desc = 'android 下载框架'
|
desc = 'android 下载框架'
|
||||||
|
|||||||
Reference in New Issue
Block a user