修复404链接导致的卡顿问题

pull/330/head
AriaLyy 8 years ago
commit 44c593225e
  1. 36
      Aria/src/main/java/com/arialyy/aria/core/task/DownloadUtil.java
  2. 13
      README.md
  3. 17
      app/proguard-rules.pro
  4. 2
      app/src/main/res/values/strings.xml

@ -40,18 +40,18 @@ public class DownloadUtil implements IDownloadUtil, Runnable {
/** /**
* 线程数 * 线程数
*/ */
private final int THREAD_NUM; private final int THREAD_NUM;
//下载监听 //下载监听
private IDownloadListener mListener; private IDownloadListener mListener;
private int mConnectTimeOut = 5000 * 4; //连接超时时间 private int mConnectTimeOut = 5000 * 4; //连接超时时间
private int mReadTimeOut = 5000 * 20; //流读取的超时时间 private int mReadTimeOut = 5000 * 20; //流读取的超时时间
private boolean isNewTask = true; private boolean isNewTask = true;
private boolean isSupportBreakpoint = true; private boolean isSupportBreakpoint = true;
private Context mContext; private Context mContext;
private DownloadEntity mDownloadEntity; private DownloadEntity mDownloadEntity;
private ExecutorService mFixedThreadPool; private ExecutorService mFixedThreadPool;
private File mDownloadFile; //下载的文件 private File mDownloadFile; //下载的文件
private File mConfigFile;//下载信息配置文件 private File mConfigFile;//下载信息配置文件
private SparseArray<Runnable> mTask = new SparseArray<>(); private SparseArray<Runnable> mTask = new SparseArray<>();
private DownloadStateConstance mConstance; private DownloadStateConstance mConstance;
@ -223,8 +223,11 @@ public class DownloadUtil implements IDownloadUtil, Runnable {
mListener.supportBreakpoint(false); mListener.supportBreakpoint(false);
Log.w(TAG, "该下载链接不支持断点下载"); Log.w(TAG, "该下载链接不支持断点下载");
handleBreakpoint(conn); handleBreakpoint(conn);
} else if (code == HttpURLConnection.HTTP_NOT_FOUND) {
Log.w(TAG, "任务【" + mDownloadEntity.getDownloadUrl() + "】下载失败,错误码:404");
//mListener.onCancel();
} else { } else {
failDownload("任务【" + mDownloadEntity.getDownloadUrl() + "】下载失败,返回码:" + code); failDownload("任务【" + mDownloadEntity.getDownloadUrl() + "】下载失败,错误码:" + code);
} }
} catch (IOException e) { } catch (IOException e) {
failDownload("下载失败【downloadUrl:" failDownload("下载失败【downloadUrl:"
@ -263,7 +266,8 @@ public class DownloadUtil implements IDownloadUtil, Runnable {
//RandomAccessFile file = new RandomAccessFile(mDownloadFile.getPath(), "rwd"); //RandomAccessFile file = new RandomAccessFile(mDownloadFile.getPath(), "rwd");
////设置文件长度 ////设置文件长度
//file.setLength(fileLength); //file.setLength(fileLength);
BufferedRandomAccessFile file = new BufferedRandomAccessFile(mDownloadFile.getPath(), "rwd", 8192); BufferedRandomAccessFile file =
new BufferedRandomAccessFile(mDownloadFile.getPath(), "rwd", 8192);
//设置文件长度 //设置文件长度
file.setLength(fileLength); file.setLength(fileLength);
mListener.onPostPre(fileLength); mListener.onPostPre(fileLength);
@ -362,12 +366,12 @@ public class DownloadUtil implements IDownloadUtil, Runnable {
*/ */
final static class ConfigEntity { final static class ConfigEntity {
//文件大小 //文件大小
long FILE_SIZE; long FILE_SIZE;
String DOWNLOAD_URL; String DOWNLOAD_URL;
int THREAD_ID; int THREAD_ID;
long START_LOCATION; long START_LOCATION;
long END_LOCATION; long END_LOCATION;
File TEMP_FILE; File TEMP_FILE;
boolean isSupportBreakpoint = true; boolean isSupportBreakpoint = true;
String CONFIG_FILE_PATH; String CONFIG_FILE_PATH;
} }

@ -1,6 +1,10 @@
# Aria # Aria
![图标](https://github.com/AriaLyy/DownloadUtil/blob/v_2.0/app/src/main/res/mipmap-hdpi/ic_launcher.png)</br> ![图标](https://github.com/AriaLyy/DownloadUtil/blob/v_2.0/app/src/main/res/mipmap-hdpi/ic_launcher.png)</br>
<<<<<<< HEAD
下载不应该是让人感到痛苦的功能,Aria,让下载更简单。</br> 下载不应该是让人感到痛苦的功能,Aria,让下载更简单。</br>
=======
Aria,让下载更简单。</br>
>>>>>>> v_2.0
+ Aria有以下特点: + Aria有以下特点:
- 简单 - 简单
- 可在Dialog、popupWindow等组件中使用 - 可在Dialog、popupWindow等组件中使用
@ -17,7 +21,7 @@
## 下载 ## 下载
[![Download](https://api.bintray.com/packages/arialyy/maven/Aria/images/download.svg)](https://bintray.com/arialyy/maven/Aria/_latestVersion)</br> [![Download](https://api.bintray.com/packages/arialyy/maven/Aria/images/download.svg)](https://bintray.com/arialyy/maven/Aria/_latestVersion)</br>
```java ```java
compile 'com.arialyy.aria:Aria:2.4.2' compile 'com.arialyy.aria:Aria:2.4.3'
``` ```
## 示例 ## 示例
@ -133,16 +137,15 @@ Aria支持https下载,如果你希望使用自己的ca证书,那么你需要
``` ```
*** ***
## 开发日志 ## 开发日志
+ v_2.4.3 修复404链接卡顿的问题
+ v_2.4.2 修复失败重试无效的bug + v_2.4.2 修复失败重试无效的bug
+ v_2.4.1 修复下载慢的问题,修复application、service 不能使用的问题 + v_2.4.1 修复下载慢的问题,修复application、service 不能使用的问题
+ v_2.4.0 支持https链接下载 + v_2.4.0 支持https链接下载
+ v_2.3.8 修复数据错乱的bug、添加fragment支持 + v_2.3.8 修复数据错乱的bug、添加fragment支持
+ v_2.3.6 添加dialog、popupWindow支持 + v_2.3.6 添加dialog、popupWindow支持
+ v_2.3.3 + v_2.3.3 添加断点支持、修改下载逻辑,让使用更加简单、修复一个内存泄露的bug
- 添加断点支持
- 修改下载逻辑,让使用更加简单
- 修复一个内存泄露的bug
+ v_2.3.1 重命名为Aria,下载流程简化 + v_2.3.1 重命名为Aria,下载流程简化
+ v_2.1.1 增加,选择最大下载任务数接口 + v_2.1.1 增加,选择最大下载任务数接口

@ -1,17 +0,0 @@
# Add project specific ProGuard rules here.
# By default, the flags in this file are appended to flags specified
# in D:\sdk/tools/proguard/proguard-android.txt
# You can edit the include path and order by changing the proguardFiles
# directive in build.gradle.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html
# Add any project specific keep options here:
# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
# public *;
#}

@ -25,7 +25,7 @@
</string-array> </string-array>
<string-array name="download_url"> <string-array name="download_url">
<item>http://g37.gdl.netease.com/onmyoji_netease.apk</item> <item>http://g37.gdl.netease.com/onmyoji_netease_1.apk</item>
<item>http://static.gaoshouyou.com/d/eb/f2/dfeba30541f209ab8a50d847fc1661ce.apk</item> <item>http://static.gaoshouyou.com/d/eb/f2/dfeba30541f209ab8a50d847fc1661ce.apk</item>
<item>http://rs.0.gaoshouyou.com/d/51/46/58514d126c46b8a3f27fc8c7db3b09ec.apk</item> <item>http://rs.0.gaoshouyou.com/d/51/46/58514d126c46b8a3f27fc8c7db3b09ec.apk</item>
<item>http://rs.0.gaoshouyou.com/d/23/69/07238f952669727878d7a0e180534c8b.apk</item> <item>http://rs.0.gaoshouyou.com/d/23/69/07238f952669727878d7a0e180534c8b.apk</item>

Loading…
Cancel
Save