优化下载文件的完整性
This commit is contained in:
@@ -245,7 +245,7 @@ public abstract class AbsFileer<ENTITY extends AbsNormalEntity, TASK_ENTITY exte
|
|||||||
}
|
}
|
||||||
for (int i = 0; i < mStartThreadNum; i++) {
|
for (int i = 0; i < mStartThreadNum; i++) {
|
||||||
AbsThreadTask task = mTask.get(i);
|
AbsThreadTask task = mTask.get(i);
|
||||||
if (task != null) {
|
if (task != null && !task.isThreadComplete()) {
|
||||||
task.stop();
|
task.stop();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -281,6 +281,9 @@ public abstract class AbsFileer<ENTITY extends AbsNormalEntity, TASK_ENTITY exte
|
|||||||
if (mRecord.threadRecords == null || mRecord.threadRecords.isEmpty()) {
|
if (mRecord.threadRecords == null || mRecord.threadRecords.isEmpty()) {
|
||||||
initRecord(true);
|
initRecord(true);
|
||||||
} else if (mRecord.isBlock) {
|
} else if (mRecord.isBlock) {
|
||||||
|
final int threadNum = mRecord.threadRecords.size();
|
||||||
|
final long blockLen = mEntity.getFileSize() / threadNum;
|
||||||
|
int i = 0;
|
||||||
for (ThreadRecord tr : mRecord.threadRecords) {
|
for (ThreadRecord tr : mRecord.threadRecords) {
|
||||||
File temp = new File(String.format(SUB_PATH, mRecord.filePath, tr.threadId));
|
File temp = new File(String.format(SUB_PATH, mRecord.filePath, tr.threadId));
|
||||||
if (!temp.exists()) {
|
if (!temp.exists()) {
|
||||||
@@ -292,16 +295,37 @@ public abstract class AbsFileer<ENTITY extends AbsNormalEntity, TASK_ENTITY exte
|
|||||||
if (tr.isComplete) {
|
if (tr.isComplete) {
|
||||||
mCompleteThreadNum++;
|
mCompleteThreadNum++;
|
||||||
} else {
|
} else {
|
||||||
mStartThreadNum++;
|
long realLocation = i * blockLen + temp.length();
|
||||||
|
ALog.w(TAG, String.format(
|
||||||
|
"startLocation = %s; endLocation = %s; block = %s; tempLen = %s; i = %s",
|
||||||
|
tr.startLocation, tr.endLocation, blockLen, temp.length(), i));
|
||||||
|
if (tr.endLocation == realLocation) {
|
||||||
|
ALog.d(TAG, String.format("分块【%s】已完成,更新记录", temp.getPath()));
|
||||||
|
tr.startLocation = realLocation;
|
||||||
|
tr.isComplete = true;
|
||||||
|
mCompleteThreadNum++;
|
||||||
|
} else {
|
||||||
|
tr.isComplete = false;
|
||||||
|
if (realLocation < tr.startLocation) {
|
||||||
|
ALog.w(TAG, String.format("修正分块【%s】的进度记录为:%s", temp.getPath(), realLocation));
|
||||||
|
tr.startLocation = realLocation;
|
||||||
|
} else if (realLocation > tr.endLocation) {
|
||||||
|
ALog.w(TAG, String.format("分块【%s】错误,将重新开始该分块", temp.getPath()));
|
||||||
|
temp.delete();
|
||||||
|
tr.startLocation = i * blockLen;
|
||||||
|
}
|
||||||
|
mStartThreadNum++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
mTotalThreadNum = mRecord.threadRecords.size();
|
i++;
|
||||||
mTaskEntity.setNewTask(false);
|
|
||||||
}
|
}
|
||||||
|
mTotalThreadNum = mRecord.threadRecords.size();
|
||||||
|
mTaskEntity.setNewTask(false);
|
||||||
} else {
|
} else {
|
||||||
File file = new File(mRecord.filePath);
|
File file = new File(mRecord.filePath);
|
||||||
if (!file.exists()) {
|
if (!file.exists()) {
|
||||||
ALog.w(TAG, String.format("下载文件【%s】不存在,任务将重新开始", file.getPath()));
|
ALog.w(TAG, String.format("文件【%s】不存在,任务将重新开始", file.getPath()));
|
||||||
mRecord.deleteData();
|
mRecord.deleteData();
|
||||||
initRecord(true);
|
initRecord(true);
|
||||||
return;
|
return;
|
||||||
@@ -483,22 +507,24 @@ public abstract class AbsFileer<ENTITY extends AbsNormalEntity, TASK_ENTITY exte
|
|||||||
}
|
}
|
||||||
|
|
||||||
//如果有记录,则恢复任务
|
//如果有记录,则恢复任务
|
||||||
if (tr.startLocation >= 0) {
|
if (tr.startLocation > 0) {
|
||||||
Long r = tr.startLocation;
|
long r = tr.startLocation;
|
||||||
//记录的位置需要在线程区间中
|
//记录的位置需要在线程区间中
|
||||||
if (startL < r && r < (i == (mTotalThreadNum - 1) ? fileLength : endL)) {
|
if (startL < r && r <= (i == (mTotalThreadNum - 1) ? fileLength : endL)) {
|
||||||
mConstance.CURRENT_LOCATION += r - startL;
|
mConstance.CURRENT_LOCATION += r - startL;
|
||||||
startL = r;
|
startL = r;
|
||||||
}
|
}
|
||||||
ALog.d(TAG, String.format("任务【%s】线程__%s__恢复任务", mEntity.getFileName(), i));
|
ALog.d(TAG, String.format("任务【%s】线程__%s__恢复任务", mEntity.getFileName(), i));
|
||||||
|
} else {
|
||||||
|
tr.startLocation = startL;
|
||||||
}
|
}
|
||||||
//最后一个线程的结束位置即为文件的总长度
|
//最后一个线程的结束位置即为文件的总长度
|
||||||
if (i == (mTotalThreadNum - 1)) {
|
if (i == (mTotalThreadNum - 1)) {
|
||||||
endL = fileLength;
|
endL = fileLength;
|
||||||
}
|
}
|
||||||
// 更新记录
|
if (tr.endLocation <= 0) {
|
||||||
tr.startLocation = startL;
|
tr.endLocation = endL;
|
||||||
tr.endLocation = endL;
|
}
|
||||||
if (isNewTr) {
|
if (isNewTr) {
|
||||||
mRecord.threadRecords.add(tr);
|
mRecord.threadRecords.add(tr);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ public class ProxyHelper {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void init() {
|
private void init() {
|
||||||
List<String> classes = CommonUtil.getClassName(AriaManager.APP,
|
List<String> classes = CommonUtil.getPkgClassNames(AriaManager.APP,
|
||||||
"com.arialyy.aria.ProxyClassCounter");
|
"com.arialyy.aria.ProxyClassCounter");
|
||||||
for (String className : classes) {
|
for (String className : classes) {
|
||||||
count(className);
|
count(className);
|
||||||
|
|||||||
@@ -50,14 +50,16 @@ public class StateConstance {
|
|||||||
* 所有子线程是否都已经停止
|
* 所有子线程是否都已经停止
|
||||||
*/
|
*/
|
||||||
public boolean isStop() {
|
public boolean isStop() {
|
||||||
return STOP_NUM == START_THREAD_NUM;
|
ALog.d(TAG, String.format("stop_num=%s; start_thread_num=%s; complete_num=%s", STOP_NUM,
|
||||||
|
START_THREAD_NUM, COMPLETE_THREAD_NUM));
|
||||||
|
return STOP_NUM == START_THREAD_NUM || STOP_NUM + COMPLETE_THREAD_NUM == START_THREAD_NUM;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 所有子线程是否都已经失败
|
* 所有子线程是否都已经失败
|
||||||
*/
|
*/
|
||||||
public boolean isFail() {
|
public boolean isFail() {
|
||||||
ALog.d(TAG, String.format("fail_num=%s; start_thread_num=%s, complete_num=%s", FAIL_NUM,
|
ALog.d(TAG, String.format("fail_num=%s; start_thread_num=%s; complete_num=%s", FAIL_NUM,
|
||||||
START_THREAD_NUM, COMPLETE_THREAD_NUM));
|
START_THREAD_NUM, COMPLETE_THREAD_NUM));
|
||||||
return COMPLETE_THREAD_NUM != START_THREAD_NUM
|
return COMPLETE_THREAD_NUM != START_THREAD_NUM
|
||||||
&& (FAIL_NUM == START_THREAD_NUM || FAIL_NUM + COMPLETE_THREAD_NUM == START_THREAD_NUM);
|
&& (FAIL_NUM == START_THREAD_NUM || FAIL_NUM + COMPLETE_THREAD_NUM == START_THREAD_NUM);
|
||||||
|
|||||||
@@ -162,7 +162,7 @@ abstract class BaseNormalTarget<TARGET extends BaseNormalTarget>
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//设置文件保存路径,如果新文件路径和就文件路径不同,则修改路径
|
//设置文件保存路径,如果新文件路径和旧文件路径不同,则修改路径
|
||||||
if (!filePath.equals(mEntity.getDownloadPath())) {
|
if (!filePath.equals(mEntity.getDownloadPath())) {
|
||||||
if (DbEntity.checkDataExist(DownloadEntity.class, "downloadPath=?", filePath)) {
|
if (DbEntity.checkDataExist(DownloadEntity.class, "downloadPath=?", filePath)) {
|
||||||
ALog.e(TAG, "下载失败,保存路径【" + filePath + "】已经被其它任务占用,请设置其它保存路径");
|
ALog.e(TAG, "下载失败,保存路径【" + filePath + "】已经被其它任务占用,请设置其它保存路径");
|
||||||
@@ -200,7 +200,7 @@ abstract class BaseNormalTarget<TARGET extends BaseNormalTarget>
|
|||||||
ALog.e(TAG, "下载失败,url【" + url + "】不合法");
|
ALog.e(TAG, "下载失败,url【" + url + "】不合法");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (!TextUtils.isEmpty(newUrl)){
|
if (!TextUtils.isEmpty(newUrl)) {
|
||||||
mEntity.setUrl(newUrl);
|
mEntity.setUrl(newUrl);
|
||||||
mTaskEntity.setUrl(newUrl);
|
mTaskEntity.setUrl(newUrl);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -76,7 +76,6 @@ final class HttpThreadTask extends AbsThreadTask<DownloadEntity, DownloadTaskEnt
|
|||||||
ALog.d(TAG,
|
ALog.d(TAG,
|
||||||
String.format("任务【%s】线程__%s__开始下载【开始位置 : %s,结束位置:%s】", mConfig.TEMP_FILE.getName(),
|
String.format("任务【%s】线程__%s__开始下载【开始位置 : %s,结束位置:%s】", mConfig.TEMP_FILE.getName(),
|
||||||
mConfig.THREAD_ID, mConfig.START_LOCATION, mConfig.END_LOCATION));
|
mConfig.THREAD_ID, mConfig.START_LOCATION, mConfig.END_LOCATION));
|
||||||
//在头里面请求下载开始位置和结束位置
|
|
||||||
conn.setRequestProperty("Range",
|
conn.setRequestProperty("Range",
|
||||||
String.format("bytes=%s-%s", mConfig.START_LOCATION, (mConfig.END_LOCATION - 1)));
|
String.format("bytes=%s-%s", mConfig.START_LOCATION, (mConfig.END_LOCATION - 1)));
|
||||||
} else {
|
} else {
|
||||||
@@ -144,10 +143,24 @@ final class HttpThreadTask extends AbsThreadTask<DownloadEntity, DownloadTaskEnt
|
|||||||
if (mSleepTime > 0) {
|
if (mSleepTime > 0) {
|
||||||
Thread.sleep(mSleepTime);
|
Thread.sleep(mSleepTime);
|
||||||
}
|
}
|
||||||
bf.flip();
|
//
|
||||||
foc.write(bf);
|
//bf.flip();
|
||||||
bf.compact();
|
//foc.write(bf);
|
||||||
progress(len);
|
//bf.compact();
|
||||||
|
//progress(len);
|
||||||
|
if (mChildCurrentLocation + len >= mConfig.END_LOCATION) {
|
||||||
|
len = (int) (mConfig.END_LOCATION - mChildCurrentLocation);
|
||||||
|
bf.flip();
|
||||||
|
fos.write(bf.array(), 0, len);
|
||||||
|
bf.compact();
|
||||||
|
progress(len);
|
||||||
|
break;
|
||||||
|
} else {
|
||||||
|
bf.flip();
|
||||||
|
foc.write(bf);
|
||||||
|
bf.compact();
|
||||||
|
progress(len);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
handleComplete();
|
handleComplete();
|
||||||
} catch (InterruptedException e) {
|
} catch (InterruptedException e) {
|
||||||
@@ -157,6 +170,7 @@ final class HttpThreadTask extends AbsThreadTask<DownloadEntity, DownloadTaskEnt
|
|||||||
} finally {
|
} finally {
|
||||||
try {
|
try {
|
||||||
if (fos != null) {
|
if (fos != null) {
|
||||||
|
fos.flush();
|
||||||
fos.close();
|
fos.close();
|
||||||
}
|
}
|
||||||
if (foc != null) {
|
if (foc != null) {
|
||||||
|
|||||||
@@ -77,7 +77,7 @@ public class CommonUtil {
|
|||||||
* @param className 过滤的类名
|
* @param className 过滤的类名
|
||||||
* @return 类的完整名称
|
* @return 类的完整名称
|
||||||
*/
|
*/
|
||||||
public static List<String> getClassName(Context context, String className) {
|
public static List<String> getPkgClassNames(Context context, String className) {
|
||||||
List<String> classNameList = new ArrayList<>();
|
List<String> classNameList = new ArrayList<>();
|
||||||
String pPath = context.getPackageCodePath();
|
String pPath = context.getPackageCodePath();
|
||||||
File dir = new File(pPath).getParentFile();
|
File dir = new File(pPath).getParentFile();
|
||||||
|
|||||||
@@ -16,10 +16,10 @@
|
|||||||
<!--android:name=".test.TestActivity"-->
|
<!--android:name=".test.TestActivity"-->
|
||||||
<!--android:name=".test.AnyRunActivity"-->
|
<!--android:name=".test.AnyRunActivity"-->
|
||||||
<!--android:name=".test.TestGroupActivity"-->
|
<!--android:name=".test.TestGroupActivity"-->
|
||||||
|
<!--android:name=".MainActivity"-->
|
||||||
<!--android:name="com.arialyy.simple.test.AnyRunActivity"-->
|
<!--android:name="com.arialyy.simple.test.AnyRunActivity"-->
|
||||||
<!--android:name=".download.group.DownloadGroupActivity"-->
|
|
||||||
<activity
|
<activity
|
||||||
android:name=".MainActivity"
|
android:name=".download.group.DownloadGroupActivity"
|
||||||
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"/>
|
||||||
|
|||||||
@@ -45,7 +45,7 @@ public class DownloadGroupActivity extends BaseActivity<ActivityDownloadGroupBin
|
|||||||
super.init(savedInstanceState);
|
super.init(savedInstanceState);
|
||||||
Aria.download(this).register();
|
Aria.download(this).register();
|
||||||
setTitle("任务组");
|
setTitle("任务组");
|
||||||
mUrls = getModule(GroupModule.class).getUrls();
|
mUrls = getModule(GroupModule.class).getUrls2();
|
||||||
DownloadGroupTaskEntity entity = Aria.download(this).getGroupTask(mUrls);
|
DownloadGroupTaskEntity entity = Aria.download(this).getGroupTask(mUrls);
|
||||||
if (entity != null && entity.getEntity() != null) {
|
if (entity != null && entity.getEntity() != null) {
|
||||||
DownloadGroupEntity groupEntity = entity.getEntity();
|
DownloadGroupEntity groupEntity = entity.getEntity();
|
||||||
@@ -82,9 +82,9 @@ public class DownloadGroupActivity extends BaseActivity<ActivityDownloadGroupBin
|
|||||||
Aria.download(this)
|
Aria.download(this)
|
||||||
.loadGroup(mUrls)
|
.loadGroup(mUrls)
|
||||||
.setDirPath(
|
.setDirPath(
|
||||||
Environment.getExternalStorageDirectory().getPath() + "/Download/group_test_3")
|
Environment.getExternalStorageDirectory().getPath() + "/Download/group_test_5")
|
||||||
.setGroupAlias("任务组测试")
|
.setGroupAlias("任务组测试")
|
||||||
//.setSubFileName(getModule(GroupModule.class).getSubName())
|
.setSubFileName(getModule(GroupModule.class).getSubName2())
|
||||||
//.setFileSize(32895492)
|
//.setFileSize(32895492)
|
||||||
.start();
|
.start();
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -50,4 +50,78 @@ public class GroupModule extends BaseModule {
|
|||||||
Collections.addAll(names, str);
|
Collections.addAll(names, str);
|
||||||
return names;
|
return names;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
List<String> getSubName2() {
|
||||||
|
List<String> taskSubFile;
|
||||||
|
taskSubFile = new ArrayList<>();
|
||||||
|
//taskSubFile.add("2156.mp4");
|
||||||
|
// taskSubFile.add("2115.mp4");
|
||||||
|
//taskSubFile.add("2009.mp4");
|
||||||
|
//taskSubFile.add("1893.mp4");
|
||||||
|
//taskSubFile.add("1952.mp4");
|
||||||
|
//taskSubFile.add("1958.mp4");
|
||||||
|
taskSubFile.add("1994.mp4");
|
||||||
|
//taskSubFile.add("2083.mp4");
|
||||||
|
taskSubFile.add("2305.JPG");
|
||||||
|
taskSubFile.add("2183.JPG");
|
||||||
|
taskSubFile.add("2154.JPG");
|
||||||
|
taskSubFile.add("2153.JPG");
|
||||||
|
taskSubFile.add("2152.JPG");
|
||||||
|
taskSubFile.add("2151.JPG");
|
||||||
|
taskSubFile.add("2149.JPG");
|
||||||
|
taskSubFile.add("2148.JPG");
|
||||||
|
taskSubFile.add("2147.JPG");
|
||||||
|
taskSubFile.add("2146.JPG");
|
||||||
|
taskSubFile.add("1949.JPG");
|
||||||
|
taskSubFile.add("1887.JPG");
|
||||||
|
taskSubFile.add("1996.txt");
|
||||||
|
return taskSubFile;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<String> getUrls2() {
|
||||||
|
List<String> downLoadUrls;
|
||||||
|
downLoadUrls = new ArrayList<>();
|
||||||
|
//downLoadUrls.add(
|
||||||
|
// "http://d.quanscreen.com/k/down/resourceDownLoad?resourceId=2156&clientId=A000011106034058176");
|
||||||
|
// downLoadUrls.add("http://d.quanscreen.com/k/down/resourceDownLoad?resourceId=2115&clientId=A000011106034058176");
|
||||||
|
//downLoadUrls.add(
|
||||||
|
// "http://d.quanscreen.com/k/down/resourceDownLoad?resourceId=2009&clientId=A000011106034058176");
|
||||||
|
//downLoadUrls.add(
|
||||||
|
// "http://d.quanscreen.com/k/down/resourceDownLoad?resourceId=1893&clientId=A000011106034058176");
|
||||||
|
//downLoadUrls.add(
|
||||||
|
// "http://d.quanscreen.com/k/down/resourceDownLoad?resourceId=1952&clientId=A000011106034058176");
|
||||||
|
//downLoadUrls.add(
|
||||||
|
// "http://d.quanscreen.com/k/down/resourceDownLoad?resourceId=1958&clientId=A000011106034058176");
|
||||||
|
downLoadUrls.add(
|
||||||
|
"http://d.quanscreen.com/k/down/resourceDownLoad?resourceId=1994&clientId=A000011106034058176");
|
||||||
|
//downLoadUrls.add(
|
||||||
|
// "http://d.quanscreen.com/k/down/resourceDownLoad?resourceId=2083&clientId=A000011106034058176");
|
||||||
|
downLoadUrls.add(
|
||||||
|
"http://d.quanscreen.com/k/down/resourceDownLoad?resourceId=2305&clientId=A000011106034058176");
|
||||||
|
downLoadUrls.add(
|
||||||
|
"http://d.quanscreen.com/k/down/resourceDownLoad?resourceId=2183&clientId=A000011106034058176");
|
||||||
|
downLoadUrls.add(
|
||||||
|
"http://d.quanscreen.com/k/down/resourceDownLoad?resourceId=2154&clientId=A000011106034058176");
|
||||||
|
downLoadUrls.add(
|
||||||
|
"http://d.quanscreen.com/k/down/resourceDownLoad?resourceId=2153&clientId=A000011106034058176");
|
||||||
|
downLoadUrls.add(
|
||||||
|
"http://d.quanscreen.com/k/down/resourceDownLoad?resourceId=2152&clientId=A000011106034058176");
|
||||||
|
downLoadUrls.add(
|
||||||
|
"http://d.quanscreen.com/k/down/resourceDownLoad?resourceId=2151&clientId=A000011106034058176");
|
||||||
|
downLoadUrls.add(
|
||||||
|
"http://d.quanscreen.com/k/down/resourceDownLoad?resourceId=2149&clientId=A000011106034058176");
|
||||||
|
downLoadUrls.add(
|
||||||
|
"http://d.quanscreen.com/k/down/resourceDownLoad?resourceId=2148&clientId=A000011106034058176");
|
||||||
|
downLoadUrls.add(
|
||||||
|
"http://d.quanscreen.com/k/down/resourceDownLoad?resourceId=2147&clientId=A000011106034058176");
|
||||||
|
downLoadUrls.add(
|
||||||
|
"http://d.quanscreen.com/k/down/resourceDownLoad?resourceId=2146&clientId=A000011106034058176");
|
||||||
|
downLoadUrls.add(
|
||||||
|
"http://d.quanscreen.com/k/down/resourceDownLoad?resourceId=1949&clientId=A000011106034058176");
|
||||||
|
downLoadUrls.add(
|
||||||
|
"http://d.quanscreen.com/k/down/resourceDownLoad?resourceId=1887&clientId=A000011106034058176");
|
||||||
|
downLoadUrls.add(
|
||||||
|
"http://d.quanscreen.com/k/down/resourceDownLoad?resourceId=1996&clientId=A000011106034058176");
|
||||||
|
return downLoadUrls;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -27,7 +27,8 @@ public class AnyRunActivity extends BaseActivity<ActivityTestBinding> {
|
|||||||
//String URL = "http://static.gaoshouyou.com/d/22/94/822260b849944492caadd2983f9bb624.apk";
|
//String URL = "http://static.gaoshouyou.com/d/22/94/822260b849944492caadd2983f9bb624.apk";
|
||||||
//private final String URL = "ftp://192.168.29.140:21/download/AriaPrj.rar";
|
//private final String URL = "ftp://192.168.29.140:21/download/AriaPrj.rar";
|
||||||
//String URL = "https://dl.genymotion.com/releases/genymotion-2.12.1/genymotion-2.12.1-vbox.exe";
|
//String URL = "https://dl.genymotion.com/releases/genymotion-2.12.1/genymotion-2.12.1-vbox.exe";
|
||||||
String URL = "ftp://192.168.29.140:21/download/SDK_Demo-release.apk";
|
//String URL = "ftp://192.168.29.140:21/download/SDK_Demo-release.apk";
|
||||||
|
String URL = "http://d.quanscreen.com/k/down/resourceDownLoad?resourceId=1994&clientId=A000011106034058176";
|
||||||
//String URL = "ftp://z:z@dygod18.com:21211/[电影天堂www.dy2018.com]猩球崛起3:终极之战BD国英双语中英双字.mkv";
|
//String URL = "ftp://z:z@dygod18.com:21211/[电影天堂www.dy2018.com]猩球崛起3:终极之战BD国英双语中英双字.mkv";
|
||||||
//private String URL = "https://www.bilibili.com/bangumi/play/ep77693";
|
//private String URL = "https://www.bilibili.com/bangumi/play/ep77693";
|
||||||
//private String URL = "http://cn-hbsjz-cmcc-v-03.acgvideo.com/upgcxcode/63/82/5108263/5108263-1-80.flv?expires=1530178500&platform=pc&ssig=vr7gLl0duyqWqSMnIpzaDA&oi=3746029570&nfa=BpfiWF+i4mNW8KzjZFHzBQ==&dynamic=1&hfa=2030547937&hfb=Yjk5ZmZjM2M1YzY4ZjAwYTMzMTIzYmIyNWY4ODJkNWI=&trid=3476be01a9254115b15f8cc7198600fe&nfc=1";
|
//private String URL = "http://cn-hbsjz-cmcc-v-03.acgvideo.com/upgcxcode/63/82/5108263/5108263-1-80.flv?expires=1530178500&platform=pc&ssig=vr7gLl0duyqWqSMnIpzaDA&oi=3746029570&nfa=BpfiWF+i4mNW8KzjZFHzBQ==&dynamic=1&hfa=2030547937&hfb=Yjk5ZmZjM2M1YzY4ZjAwYTMzMTIzYmIyNWY4ODJkNWI=&trid=3476be01a9254115b15f8cc7198600fe&nfc=1";
|
||||||
@@ -49,8 +50,8 @@ public class AnyRunActivity extends BaseActivity<ActivityTestBinding> {
|
|||||||
public void onClick(View view) {
|
public void onClick(View view) {
|
||||||
switch (view.getId()) {
|
switch (view.getId()) {
|
||||||
case R.id.start:
|
case R.id.start:
|
||||||
//module.start(URL);
|
module.start(URL);
|
||||||
module.startFtp(URL);
|
//module.startFtp(URL);
|
||||||
break;
|
break;
|
||||||
case R.id.stop:
|
case R.id.stop:
|
||||||
module.stop(URL);
|
module.stop(URL);
|
||||||
|
|||||||
@@ -65,7 +65,7 @@ public class AnyRunnModule {
|
|||||||
|
|
||||||
void start(String url) {
|
void start(String url) {
|
||||||
mUrl = url;
|
mUrl = url;
|
||||||
String path = Environment.getExternalStorageDirectory().getPath() + "/aaas.apk";
|
String path = Environment.getExternalStorageDirectory().getPath() + "/mmm.mp4";
|
||||||
Aria.download(this)
|
Aria.download(this)
|
||||||
.load(url)
|
.load(url)
|
||||||
.setRequestMode(RequestEnum.GET)
|
.setRequestMode(RequestEnum.GET)
|
||||||
|
|||||||
Reference in New Issue
Block a user