laoyuyu 7 years ago
parent 652b53c837
commit a33df648ab
  1. 18
      Aria/src/main/java/com/arialyy/aria/core/common/AbsFileer.java
  2. 4
      Aria/src/main/java/com/arialyy/aria/core/download/BaseDListener.java
  3. 9
      Aria/src/main/java/com/arialyy/aria/core/download/DownloadGroupTask.java
  4. 7
      Aria/src/main/java/com/arialyy/aria/core/download/DownloadTask.java
  5. 41
      Aria/src/main/java/com/arialyy/aria/core/download/downloader/AbsGroupUtil.java
  6. 7
      DEV_LOG.md
  7. 6
      app/src/main/AndroidManifest.xml
  8. 8
      aria/src/main/java/com/arialyy/aria/core/upload/UploadTask.java
  9. 2
      build.gradle

@ -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 下载框架'

Loading…
Cancel
Save