diff --git a/PublicComponent/src/main/java/com/arialyy/aria/core/loader/NormalLoader.java b/PublicComponent/src/main/java/com/arialyy/aria/core/loader/NormalLoader.java index a3d4db2e..6efb8084 100644 --- a/PublicComponent/src/main/java/com/arialyy/aria/core/loader/NormalLoader.java +++ b/PublicComponent/src/main/java/com/arialyy/aria/core/loader/NormalLoader.java @@ -20,6 +20,8 @@ import android.os.Looper; import com.arialyy.aria.core.common.AbsEntity; import com.arialyy.aria.core.common.AbsNormalEntity; import com.arialyy.aria.core.common.CompleteInfo; +import com.arialyy.aria.core.event.DSpeedEvent; +import com.arialyy.aria.core.event.Event; import com.arialyy.aria.core.event.EventMsgUtil; import com.arialyy.aria.core.inf.IThreadStateManager; import com.arialyy.aria.core.listener.IDLoadListener; @@ -57,6 +59,9 @@ public class NormalLoader extends AbsNormalLoader { return getEntity().getFileSize(); } + @Event + public void maxSpeed(DSpeedEvent event) { setMaxSpeed(event.speed); } + /** * 设置最大下载/上传速度AbsFtpInfoThread * diff --git a/PublicComponent/src/main/java/com/arialyy/aria/core/loader/NormalThreadStateManager.java b/PublicComponent/src/main/java/com/arialyy/aria/core/loader/NormalThreadStateManager.java index 4a8a6bbd..54b728b3 100644 --- a/PublicComponent/src/main/java/com/arialyy/aria/core/loader/NormalThreadStateManager.java +++ b/PublicComponent/src/main/java/com/arialyy/aria/core/loader/NormalThreadStateManager.java @@ -19,6 +19,7 @@ import android.os.Bundle; import android.os.Handler; import android.os.Looper; import android.os.Message; +import android.util.Log; import com.arialyy.aria.core.TaskRecord; import com.arialyy.aria.core.inf.IThreadStateManager; import com.arialyy.aria.core.listener.IEventListener; @@ -49,6 +50,8 @@ public class NormalThreadStateManager implements IThreadStateManager { private long mProgress; //当前总进度 private TaskRecord mTaskRecord; // 任务记录 private Looper mLooper; + private boolean mNeedRetry = false; + private AriaException mE = null; /** * @param listener 任务事件 @@ -90,10 +93,11 @@ public class NormalThreadStateManager implements IThreadStateManager { break; case STATE_FAIL: mFailNum.getAndIncrement(); + Bundle bundle = msg.getData(); + mNeedRetry = bundle.getBoolean(DATA_RETRY, false); + mE = (AriaException) bundle.getSerializable(DATA_ERROR_INFO); if (isFail()) { - Bundle b = msg.getData(); - mListener.onFail(b.getBoolean(DATA_RETRY, false), - (AriaException) b.getSerializable(DATA_ERROR_INFO)); + mListener.onFail(mNeedRetry, mE); quitLooper(); } break; @@ -109,13 +113,16 @@ public class NormalThreadStateManager implements IThreadStateManager { if (mergeFile()) { mListener.onComplete(); } else { - mListener.onFail(false, null); + mListener.onFail(false, new AriaException("Merge File Failed")); } quitLooper(); break; } mListener.onComplete(); quitLooper(); + } else if(isFail()) { + mListener.onFail(mNeedRetry, mE); + quitLooper(); } break; case STATE_RUNNING: @@ -170,7 +177,7 @@ public class NormalThreadStateManager implements IThreadStateManager { //ALog.d(TAG, // String.format("isStop; stopNum: %s, cancelNum: %s, failNum: %s, completeNum: %s", mStopNum, // mCancelNum, mFailNum, mCompleteNum)); - return mStopNum.get() == mThreadNum || mStopNum.get() + mCompleteNum.get() == mThreadNum; + return mStopNum.get() == mThreadNum || mStopNum.get() + mFailNum.get() + mCompleteNum.get() == mThreadNum; } /** @@ -247,8 +254,12 @@ public class NormalThreadStateManager implements IThreadStateManager { * @return {@code true} 合并成功,{@code false}合并失败 */ private boolean mergeFile() { + Log.d(TAG, "mergeFile: mTaskRecord.threadNum=" + mTaskRecord.threadNum); if (mTaskRecord.threadNum == 1) { File targetFile = new File(mTaskRecord.filePath); + Log.d(TAG, "mergeFile: mTaskRecord.fileLength=" + mTaskRecord.fileLength + + ",targetFile.length()=" + targetFile.length() + ",targetFile.exists()=" + targetFile.exists() + + ",mTaskRecord.filePath" + mTaskRecord.filePath); if (targetFile.exists()){ //没有获得文件长度:不支持断点续传 if (mTaskRecord.fileLength == 0 && targetFile.length() != 0) { diff --git a/PublicComponent/src/main/java/com/arialyy/aria/core/task/ThreadTask.java b/PublicComponent/src/main/java/com/arialyy/aria/core/task/ThreadTask.java index 8a67263b..ab7ce22d 100644 --- a/PublicComponent/src/main/java/com/arialyy/aria/core/task/ThreadTask.java +++ b/PublicComponent/src/main/java/com/arialyy/aria/core/task/ThreadTask.java @@ -232,7 +232,7 @@ public class ThreadTask implements IThreadTask, IThreadTaskObserver { FileUtil.deleteFile(blockFile); ALog.i(TAG, String.format("删除分块【%s】成功", blockFile.getName())); } - retryBlockTask(isBreak()); + retryBlockTask(!isBreak()); return false; } return true; @@ -464,6 +464,13 @@ public class ThreadTask implements IThreadTask, IThreadTaskObserver { ALog.w(TAG, String.format("分块【%s】第%s次重试", getFileName(), String.valueOf(mFailTimes))); mFailTimes++; handleBlockRecord(); + if (!NetUtils.isConnected(AriaConfig.getInstance().getAPP())) { + try { + Thread.sleep(500); + } catch (InterruptedException e) { + // fall through + } + } ThreadTaskManager.getInstance().retryThread(this); return; } @@ -548,7 +555,7 @@ public class ThreadTask implements IThreadTask, IThreadTaskObserver { @Override public ThreadTask call() throws Exception { isDestroy = false; - Process.setThreadPriority(Process.THREAD_PRIORITY_BACKGROUND); + Process.setThreadPriority(Process.THREAD_PRIORITY_DEFAULT); TrafficStats.setThreadStatsTag(UUID.randomUUID().toString().hashCode()); mAdapter.call(this); return this; diff --git a/build.gradle b/build.gradle index 39e7ddb7..dd00313b 100644 --- a/build.gradle +++ b/build.gradle @@ -56,8 +56,8 @@ ext { licences = ['Apache-2.0'] // mavenCentral - mavenVersion = '3.8.16' - mavenCentralGroupId = 'me.laoyuyu.aria' + mavenVersion = '1.0.1' + mavenCentralGroupId = 'com.tencent.tcr' mavenCentralUserID = 'laoyuyu' mavenCentralUserName = 'laoyuyu' mavenCentralEmail = '511455842@qq.com' diff --git a/gradle/mavenCentral-release.gradle b/gradle/mavenCentral-release.gradle index 0fcb99ae..8b6bb03b 100644 --- a/gradle/mavenCentral-release.gradle +++ b/gradle/mavenCentral-release.gradle @@ -1,6 +1,7 @@ apply plugin: 'maven-publish' apply plugin: 'signing' +version rootProject.ext.mavenVersion ext { PUBLISH_GROUP_ID = rootProject.ext.mavenCentralGroupId PUBLISH_VERSION = rootProject.ext.mavenVersion @@ -55,13 +56,13 @@ static def localMavenRepo() { def getReleaseRepositoryUrl() { return isLocal() ? localMavenRepo() : hasProperty('RELEASE_REPOSITORY_URL') ? RELEASE_REPOSITORY_URL - : 'https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/' + : 'https://oss.sonatype.org/service/local/staging/deploy/maven2/' } def getSnapshotRepositoryUrl() { return isLocal() ? localMavenRepo() : hasProperty('SNAPSHOT_REPOSITORY_URL') ? SNAPSHOT_REPOSITORY_URL - : 'https://s01.oss.sonatype.org/content/repositories/snapshots/' + : 'https://mirrors.tencent.com/repository/maven/CloudRenderSdk/MicroSdk/snapshots/' } def isLocal(){ @@ -161,7 +162,7 @@ afterEvaluate { project -> artifact androidLibraryJar artifact androidSourcesJar - artifact androidJavadocsJar +// artifact androidJavadocsJar } else if (project.plugins.hasPlugin('java')) { from components.java diff --git a/secring.gpg b/secring.gpg new file mode 100644 index 00000000..9714220a Binary files /dev/null and b/secring.gpg differ