优化异常提示
This commit is contained in:
laoyuyu
2020-02-06 22:22:10 +08:00
parent 96efa35c4e
commit e015c2a2f7
55 changed files with 324 additions and 523 deletions

View File

@@ -17,22 +17,21 @@ package com.arialyy.simple.core.download.group;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.view.View;
import com.arialyy.annotations.DownloadGroup;
import com.arialyy.aria.core.Aria;
import com.arialyy.aria.core.common.AbsEntity;
import com.arialyy.aria.core.common.HttpOption;
import com.arialyy.aria.core.processor.IHttpFileLenAdapter;
import com.arialyy.aria.core.download.DownloadEntity;
import com.arialyy.aria.core.download.DownloadGroupEntity;
import com.arialyy.aria.core.inf.IEntity;
import com.arialyy.aria.core.processor.IHttpFileLenAdapter;
import com.arialyy.aria.core.task.DownloadGroupTask;
import com.arialyy.aria.util.ALog;
import com.arialyy.frame.util.show.L;
import com.arialyy.frame.util.show.T;
import com.arialyy.simple.R;
import com.arialyy.simple.base.BaseActivity;
import com.arialyy.simple.databinding.ActivityDownloadGroupBinding;
import com.arialyy.simple.widget.ProgressLayout;
import com.arialyy.simple.widget.SubStateLinearLayout;
import java.util.List;
import java.util.Map;
@@ -57,26 +56,47 @@ public class DownloadGroupActivity extends BaseActivity<ActivityDownloadGroupBin
if (entity != null) {
mTaskId = entity.getId();
mChildList.addData(entity.getSubEntities());
getBinding().setStateStr(
entity.getState() == IEntity.STATE_RUNNING ? getString(R.string.stop)
: getString(R.string.resume));
getBinding().setFileSize(entity.getConvertFileSize());
if (entity.getFileSize() == 0) {
getBinding().setProgress(0);
} else {
getBinding().setProgress(entity.isComplete() ? 100
: (int) (entity.getCurrentProgress() * 100 / entity.getFileSize()));
}
ALog.d(TAG, "progress = " + getBinding().getProgress());
ALog.d(TAG,
"size = " + entity.getSubEntities().size() + "; len = " + entity.getConvertFileSize());
}else {
entity = new DownloadGroupEntity();
}
getBinding().pl.setInfo(entity);
mChildList.setOnItemClickListener(new SubStateLinearLayout.OnItemClickListener() {
@Override public void onItemClick(int position, View view) {
showPopupWindow(position);
}
});
getBinding().pl.setBtListener(new ProgressLayout.OnProgressLayoutBtListener() {
@Override public void create(View v, AbsEntity entity) {
mTaskId = Aria.download(this)
.loadGroup(mUrls)
.setDirPath(
Environment.getExternalStorageDirectory().getPath() + "/Download/group_imgs")
//.setSubFileName(getModule(GroupModule.class).getSubName2())
.setSubFileName(getModule(GroupModule.class).getSubName())
.unknownSize()
.option(getHttpOption())
.ignoreFilePathOccupy()
//.setFileSize(114981416)
//.updateUrls(temp)
.create();
}
@Override public void stop(View v, AbsEntity entity) {
Aria.download(this).loadGroup(mTaskId).stop();
}
@Override public void resume(View v, AbsEntity entity) {
Aria.download(this).loadGroup(mTaskId).resume();
}
@Override public void cancel(View v, AbsEntity entity) {
Aria.download(this).loadGroup(mTaskId).cancel(true);
mTaskId = -1;
}
});
}
private void showPopupWindow(int position) {
@@ -89,111 +109,69 @@ public class DownloadGroupActivity extends BaseActivity<ActivityDownloadGroupBin
return R.layout.activity_download_group;
}
public void onClick(View view) {
switch (view.getId()) {
case R.id.start:
if (mTaskId == -1) {
mTaskId = Aria.download(this)
.loadGroup(mUrls)
.setDirPath(
Environment.getExternalStorageDirectory().getPath() + "/Download/group_imgs")
//.setSubFileName(getModule(GroupModule.class).getSubName2())
.setSubFileName(getModule(GroupModule.class).getSubName())
.unknownSize()
.option(getHttpOption())
.ignoreFilePathOccupy()
//.setFileSize(114981416)
//.updateUrls(temp)
.create();
getBinding().setStateStr(getString(R.string.stop));
break;
}
if (Aria.download(this).loadGroup(mTaskId).isRunning()) {
Aria.download(this).loadGroup(mTaskId).stop();
getBinding().setStateStr(getString(R.string.resume));
} else {
Aria.download(this).loadGroup(mTaskId).resume();
getBinding().setStateStr(getString(R.string.stop));
}
break;
case R.id.cancel:
Aria.download(this).loadGroup(mTaskId).cancel(true);
mTaskId = -1;
break;
}
}
private HttpOption getHttpOption(){
private HttpOption getHttpOption() {
HttpOption option = new HttpOption();
option.setFileLenAdapter(new HttpFileLenAdapter());
return option;
}
@DownloadGroup.onWait void taskWait(DownloadGroupTask task) {
L.d(TAG, task.getTaskName() + "wait");
ALog.d(TAG, task.getTaskName() + "wait");
}
@DownloadGroup.onPre() protected void onPre(DownloadGroupTask task) {
L.d(TAG, "group pre, p = " + task.getPercent());
ALog.d(TAG, "group pre, p = " + task.getPercent());
}
@DownloadGroup.onTaskPre() protected void onTaskPre(DownloadGroupTask task) {
L.d(TAG, "group task pre, p = " + task.getPercent());
getBinding().setFileSize(task.getConvertFileSize());
ALog.d(TAG, "group task pre, p = " + task.getPercent());
if (mChildList.getSubData().size() <= 0) {
mChildList.addData(task.getEntity().getSubEntities());
}
getBinding().pl.setInfo(task.getEntity());
}
@DownloadGroup.onTaskStart() void taskStart(DownloadGroupTask task) {
getBinding().setFileSize(task.getConvertFileSize());
L.d(TAG, "group task create, p = " + task.getPercent());
ALog.d(TAG, "group task create, p = " + task.getPercent());
getBinding().pl.setInfo(task.getEntity());
}
@DownloadGroup.onTaskRunning() protected void running(DownloadGroupTask task) {
Log.d(TAG, "group running, p = "
ALog.d(TAG, "group running, p = "
+ task.getPercent()
+ ", speed = "
+ task.getConvertSpeed()
+ ", current_p = "
+ task.getCurrentProgress());
getBinding().setProgress(task.getPercent());
getBinding().setSpeed(task.getConvertSpeed());
getBinding().setTimeLeft(task.getConvertTimeLeft());
getBinding().pl.setInfo(task.getEntity());
//Log.d(TAG, "sub_len = " + task.getEntity().getSubEntities().size());
mChildList.updateChildProgress(task.getEntity().getSubEntities());
}
@DownloadGroup.onTaskResume() void taskResume(DownloadGroupTask task) {
L.d(TAG, "group task resume, p = " + task.getPercent());
ALog.d(TAG, "group task resume, p = " + task.getPercent());
}
@DownloadGroup.onTaskStop() void taskStop(DownloadGroupTask task) {
L.d(TAG, "group task stop");
getBinding().setSpeed("");
getBinding().setStateStr(getString(R.string.start));
ALog.d(TAG, "group task stop");
getBinding().pl.setInfo(task.getEntity());
}
@DownloadGroup.onTaskCancel() void taskCancel(DownloadGroupTask task) {
L.d(TAG, "group task cancel");
getBinding().setSpeed("");
getBinding().setProgress(0);
getBinding().setStateStr(getString(R.string.start));
ALog.d(TAG, "group task cancel");
getBinding().pl.setInfo(task.getEntity());
}
@DownloadGroup.onTaskFail() void taskFail(DownloadGroupTask task) {
L.d(TAG, "group task fail");
getBinding().setStateStr(getString(R.string.resume));
getBinding().setSpeed("");
ALog.d(TAG, "group task fail");
getBinding().pl.setInfo(task.getEntity());
}
@DownloadGroup.onTaskComplete() void taskComplete(DownloadGroupTask task) {
getBinding().setProgress(100);
getBinding().setSpeed("");
mChildList.updateChildProgress(task.getEntity().getSubEntities());
T.showShort(this, "任务组下载完成");
L.d(TAG, "任务组下载完成");
getBinding().setStateStr(getString(R.string.start));
ALog.d(TAG, "任务组下载完成");
getBinding().pl.setInfo(task.getEntity());
}
@DownloadGroup.onSubTaskRunning void onSubTaskRunning(DownloadGroupTask groupTask,
@@ -246,7 +224,7 @@ public class DownloadGroupActivity extends BaseActivity<ActivityDownloadGroupBin
DownloadEntity subEntity) {
}
static class HttpFileLenAdapter implements IHttpFileLenAdapter{
static class HttpFileLenAdapter implements IHttpFileLenAdapter {
@Override public long handleFileLen(Map<String, List<String>> headers) {
List<String> sLength = headers.get("Content-Length");

View File

@@ -20,18 +20,17 @@ import android.os.Environment;
import android.view.View;
import com.arialyy.annotations.DownloadGroup;
import com.arialyy.aria.core.Aria;
import com.arialyy.aria.core.common.AbsEntity;
import com.arialyy.aria.core.common.FtpOption;
import com.arialyy.aria.core.download.DownloadGroupEntity;
import com.arialyy.aria.core.inf.IEntity;
import com.arialyy.aria.core.task.DownloadGroupTask;
import com.arialyy.aria.util.ALog;
import com.arialyy.frame.util.show.L;
import com.arialyy.frame.util.show.T;
import com.arialyy.simple.R;
import com.arialyy.simple.base.BaseActivity;
import com.arialyy.simple.databinding.ActivityDownloadGroupBinding;
import com.arialyy.simple.widget.ProgressLayout;
import com.arialyy.simple.widget.SubStateLinearLayout;
import java.security.AlgorithmConstraints;
/**
* Created by lyy on 2017/7/6.
@@ -52,110 +51,95 @@ public class FTPDirDownloadActivity extends BaseActivity<ActivityDownloadGroupBi
if (entity != null) {
mTaskId = entity.getId();
mChildList.addData(entity.getSubEntities());
getBinding().setFileSize(entity.getConvertFileSize());
if (entity.getState() == IEntity.STATE_RUNNING) {
getBinding().setStateStr(getString(R.string.stop));
} else {
getBinding().setStateStr(getString(R.string.start));
}
if (entity.getFileSize() == 0) {
getBinding().setProgress(0);
} else {
getBinding().setProgress(entity.isComplete() ? 100
: (int) (entity.getCurrentProgress() * 100 / entity.getFileSize()));
}
getBinding().pl.setInfo(entity);
}
getBinding().pl.setBtListener(new ProgressLayout.OnProgressLayoutBtListener() {
@Override public void create(View v, AbsEntity entity) {
mTaskId = Aria.download(this)
.loadFtpDir(dir)
.setDirPath(
Environment.getExternalStorageDirectory().getPath() + "/Download/ftp_dir")
.setGroupAlias("ftp文件夹下载")
.option(getFtpOption())
.ignoreFilePathOccupy()
.create();
}
@Override public void stop(View v, AbsEntity entity) {
Aria.download(this).loadFtpDir(mTaskId).stop();
}
@Override public void resume(View v, AbsEntity entity) {
Aria.download(this)
.loadFtpDir(mTaskId)
.option(getFtpOption())
.resume();
}
@Override public void cancel(View v, AbsEntity entity) {
Aria.download(this).loadFtpDir(mTaskId).cancel();
mTaskId = -1;
}
});
}
@Override protected int setLayoutId() {
return R.layout.activity_download_group;
}
public void onClick(View view) {
switch (view.getId()) {
case R.id.start:
if (mTaskId == -1) {
mTaskId = Aria.download(this)
.loadFtpDir(dir)
.setDirPath(
Environment.getExternalStorageDirectory().getPath() + "/Download/ftp_dir")
.setGroupAlias("ftp文件夹下载")
.option(getFtpOption())
.ignoreFilePathOccupy()
.create();
getBinding().setStateStr(getString(R.string.stop));
break;
}
if (Aria.download(this).loadFtpDir(mTaskId).isRunning()) {
Aria.download(this).loadFtpDir(mTaskId).stop();
getBinding().setStateStr(getString(R.string.resume));
} else {
Aria.download(this)
.loadFtpDir(mTaskId)
.option(getFtpOption())
.resume();
getBinding().setStateStr(getString(R.string.stop));
}
break;
case R.id.cancel:
Aria.download(this).loadFtpDir(mTaskId).cancel();
mTaskId = -1;
break;
}
}
private FtpOption getFtpOption() {
FtpOption option = new FtpOption();
option.login(user, pwd);
return option;
}
@DownloadGroup.onPre() protected void onPre(DownloadGroupTask task) {
L.d(TAG, "group pre");
@DownloadGroup.onPre protected void onPre(DownloadGroupTask task) {
ALog.d(TAG, "ftp dir pre");
getBinding().pl.setInfo(task.getEntity());
}
@DownloadGroup.onTaskPre() protected void onTaskPre(DownloadGroupTask task) {
@DownloadGroup.onTaskPre protected void onTaskPre(DownloadGroupTask task) {
ALog.d(TAG, "ftp dir task pre");
if (mChildList.getSubData().size() <= 0) {
mChildList.addData(task.getEntity().getSubEntities());
}
getBinding().setFileSize(task.getConvertFileSize());
getBinding().pl.setInfo(task.getEntity());
}
@DownloadGroup.onTaskStart() void taskStart(DownloadGroupTask task) {
@DownloadGroup.onTaskStart void taskStart(DownloadGroupTask task) {
ALog.d(TAG, "ftp dir start");
getBinding().pl.setInfo(task.getEntity());
}
@DownloadGroup.onTaskRunning() protected void running(DownloadGroupTask task) {
@DownloadGroup.onTaskRunning protected void running(DownloadGroupTask task) {
ALog.d(TAG, "ftp dir running, p = " + task.getPercent());
getBinding().setProgress(task.getPercent());
getBinding().setSpeed(task.getConvertSpeed());
getBinding().pl.setInfo(task.getEntity());
mChildList.updateChildProgress(task.getEntity().getSubEntities());
}
@DownloadGroup.onTaskResume() void taskResume(DownloadGroupTask task) {
@DownloadGroup.onTaskResume void taskResume(DownloadGroupTask task) {
ALog.d(TAG, "ftp dir resume");
}
@DownloadGroup.onTaskStop() void taskStop(DownloadGroupTask task) {
getBinding().setSpeed("");
getBinding().setStateStr(getString(R.string.start));
@DownloadGroup.onTaskStop void taskStop(DownloadGroupTask task) {
ALog.d(TAG, "ftp dir stop");
getBinding().pl.setInfo(task.getEntity());
}
@DownloadGroup.onTaskCancel() void taskCancel(DownloadGroupTask task) {
getBinding().setSpeed("");
getBinding().setProgress(0);
getBinding().setStateStr(getString(R.string.start));
@DownloadGroup.onTaskCancel void taskCancel(DownloadGroupTask task) {
ALog.d(TAG, "ftp dir cancel");
getBinding().pl.setInfo(task.getEntity());
}
@DownloadGroup.onTaskFail() void taskFail(DownloadGroupTask task) {
L.d(TAG, "group task fail");
@DownloadGroup.onTaskFail void taskFail(DownloadGroupTask task) {
ALog.d(TAG, "group task fail");
getBinding().pl.setInfo(task.getEntity());
}
@DownloadGroup.onTaskComplete() void taskComplete(DownloadGroupTask task) {
getBinding().setProgress(100);
@DownloadGroup.onTaskComplete void taskComplete(DownloadGroupTask task) {
mChildList.updateChildProgress(task.getEntity().getSubEntities());
getBinding().setStateStr(getString(R.string.re_start));
getBinding().setSpeed("");
getBinding().pl.setInfo(task.getEntity());
T.showShort(this, "任务组下载完成");
L.d(TAG, "任务组下载完成");
ALog.d(TAG, "任务组下载完成");
}
}

View File

@@ -1,30 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:bind="http://schemas.android.com/apk/res-auto"
>
<data>
<variable
name="fileSize"
type="String"
/>
<variable
name="speed"
type="String"
/>
<variable
name="progress"
type="int"
/>
<variable
name="stateStr"
type="String"
/>
<variable
name="timeLeft"
type="String"
/>
</data>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<RelativeLayout
android:layout_width="match_parent"
@@ -32,26 +7,21 @@
android:orientation="vertical"
>
<include layout="@layout/layout_bar"/>
<include layout="@layout/layout_bar" />
<include
layout="@layout/layout_content_single"
android:id="@+id/content"
android:layout_width="wrap_content"
<com.arialyy.simple.widget.ProgressLayout
android:id="@+id/pl"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/toolbar"
bind:fileSize="@{fileSize}"
bind:progress="@{progress}"
bind:speed="@{speed}"
bind:stateStr="@{stateStr}"
bind:timeLeft="@{timeLeft}"
android:layout_margin="16dp"
/>
<com.arialyy.simple.widget.SubStateLinearLayout
android:id="@+id/child_list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/content"
android:layout_below="@+id/pl"
android:paddingLeft="16dp"
android:paddingRight="16dp"
/>

View File

@@ -53,6 +53,7 @@
android:layout_alignTop="@+id/speed_or_state"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:text="-/-"
android:textSize="@dimen/text_size_smallest"
tools:ignore="RelativeOverlap"
/>