|  |  |  | @ -225,7 +225,7 @@ public class ThreadTask implements IThreadTask, IThreadTaskObserver { | 
			
		
	
		
			
				
					|  |  |  |  |     File blockFile = mConfig.tempFile; | 
			
		
	
		
			
				
					|  |  |  |  |     if (!blockFile.exists() || blockFile.length() != mRecord.blockLen) { | 
			
		
	
		
			
				
					|  |  |  |  |       ALog.i(TAG, | 
			
		
	
		
			
				
					|  |  |  |  |           String.format("分块【%s】错误,blockFileLen: %s, threadRect: %s; 即将重新下载该分块,开始位置:%s,结束位置:%s", | 
			
		
	
		
			
				
					|  |  |  |  |           String.format("分块【%s】错误,blockFileLen: %s, threadRect: %s; 即将重新下载该分块, 开始位置:%s,结束位置:%s", | 
			
		
	
		
			
				
					|  |  |  |  |               blockFile.getName(), blockFile.length(), mRecord.blockLen, mRecord.startLocation, | 
			
		
	
		
			
				
					|  |  |  |  |               mRecord.endLocation)); | 
			
		
	
		
			
				
					|  |  |  |  |       if (blockFile.exists()) { | 
			
		
	
	
		
			
				
					|  |  |  | @ -310,7 +310,8 @@ public class ThreadTask implements IThreadTask, IThreadTaskObserver { | 
			
		
	
		
			
				
					|  |  |  |  |   } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |   @Override public synchronized void updateCompleteState() { | 
			
		
	
		
			
				
					|  |  |  |  |     ALog.i(TAG, String.format("任务【%s】线程__%s__完成, blockSize = %s", getTaskWrapper().getKey(), mRecord.threadId, mConfig.tempFile.length())); | 
			
		
	
		
			
				
					|  |  |  |  |     ALog.i(TAG, String.format("任务【%s】线程__%s__完成, blockSize = %s", getTaskWrapper().getKey(), | 
			
		
	
		
			
				
					|  |  |  |  |         mRecord.threadId, mConfig.tempFile.length())); | 
			
		
	
		
			
				
					|  |  |  |  |     writeConfig(true, mRecord.endLocation); | 
			
		
	
		
			
				
					|  |  |  |  |     // 进度发送不是实时的,发送完成任务前,需要更新一次进度
 | 
			
		
	
		
			
				
					|  |  |  |  |     sendRunningState(); | 
			
		
	
	
		
			
				
					|  |  |  | @ -420,7 +421,7 @@ public class ThreadTask implements IThreadTask, IThreadTaskObserver { | 
			
		
	
		
			
				
					|  |  |  |  |    * 重试ts分片 | 
			
		
	
		
			
				
					|  |  |  |  |    */ | 
			
		
	
		
			
				
					|  |  |  |  |   private void retryM3U8Peer(boolean needRetry) { | 
			
		
	
		
			
				
					|  |  |  |  |     if (mConfig.ignoreFailure){ | 
			
		
	
		
			
				
					|  |  |  |  |     if (mConfig.ignoreFailure) { | 
			
		
	
		
			
				
					|  |  |  |  |       ALog.d(TAG, "忽略失败的切片"); | 
			
		
	
		
			
				
					|  |  |  |  |       sendFailMsg(null, false); | 
			
		
	
		
			
				
					|  |  |  |  |       return; | 
			
		
	
	
		
			
				
					|  |  |  | @ -431,9 +432,10 @@ public class ThreadTask implements IThreadTask, IThreadTaskObserver { | 
			
		
	
		
			
				
					|  |  |  |  |       sendFailMsg(null, false); | 
			
		
	
		
			
				
					|  |  |  |  |       return; | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  |     if (mFailTimes < RETRY_NUM && needRetry && (NetUtils.isConnected( | 
			
		
	
		
			
				
					|  |  |  |  |         AriaConfig.getInstance().getAPP()) | 
			
		
	
		
			
				
					|  |  |  |  |         || isNotNetRetry) && !isBreak()) { | 
			
		
	
		
			
				
					|  |  |  |  |     if (mFailTimes < RETRY_NUM | 
			
		
	
		
			
				
					|  |  |  |  |         && needRetry | 
			
		
	
		
			
				
					|  |  |  |  |         && (NetUtils.isConnected(AriaConfig.getInstance().getAPP()) || isNotNetRetry) | 
			
		
	
		
			
				
					|  |  |  |  |         && !isBreak()) { | 
			
		
	
		
			
				
					|  |  |  |  |       ALog.w(TAG, String.format("ts切片【%s】第%s重试", getFileName(), String.valueOf(mFailTimes))); | 
			
		
	
		
			
				
					|  |  |  |  |       mFailTimes++; | 
			
		
	
		
			
				
					|  |  |  |  |       FileUtil.deleteFile(mConfig.tempFile); | 
			
		
	
	
		
			
				
					|  |  |  | @ -455,15 +457,19 @@ public class ThreadTask implements IThreadTask, IThreadTaskObserver { | 
			
		
	
		
			
				
					|  |  |  |  |       sendFailMsg(null, false); | 
			
		
	
		
			
				
					|  |  |  |  |       return; | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  |     if (mFailTimes < RETRY_NUM && needRetry && (NetUtils.isConnected( | 
			
		
	
		
			
				
					|  |  |  |  |         AriaConfig.getInstance().getAPP()) || isNotNetRetry) && !isBreak()) { | 
			
		
	
		
			
				
					|  |  |  |  |     if (mFailTimes < RETRY_NUM | 
			
		
	
		
			
				
					|  |  |  |  |         && needRetry | 
			
		
	
		
			
				
					|  |  |  |  |         && (NetUtils.isConnected(AriaConfig.getInstance().getAPP()) || isNotNetRetry) | 
			
		
	
		
			
				
					|  |  |  |  |         && !isBreak()) { | 
			
		
	
		
			
				
					|  |  |  |  |       ALog.w(TAG, String.format("分块【%s】第%s次重试", getFileName(), String.valueOf(mFailTimes))); | 
			
		
	
		
			
				
					|  |  |  |  |       mFailTimes++; | 
			
		
	
		
			
				
					|  |  |  |  |       handleBlockRecord(); | 
			
		
	
		
			
				
					|  |  |  |  |       ThreadTaskManager.getInstance().retryThread(this); | 
			
		
	
		
			
				
					|  |  |  |  |       return; | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  |     ALog.e(TAG, String.format("任务【%s】执行失败", getFileName())); | 
			
		
	
		
			
				
					|  |  |  |  |     ALog.e(TAG, | 
			
		
	
		
			
				
					|  |  |  |  |         String.format("重试分开【%s】失败,failTimes = %s, needRetry = %s, isBreak = %s", | 
			
		
	
		
			
				
					|  |  |  |  |             getFileName(), mFailTimes, needRetry, isBreak())); | 
			
		
	
		
			
				
					|  |  |  |  |     sendFailMsg(null, needRetry); | 
			
		
	
		
			
				
					|  |  |  |  |   } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
	
		
			
				
					|  |  |  | 
 |