修复创建唯一id可能出现的问题

This commit is contained in:
laoyuyu
2019-07-30 19:30:49 +08:00
parent 9951f04bf6
commit 43915ad204
6 changed files with 36 additions and 2 deletions

View File

@@ -19,6 +19,12 @@ import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@Retention(RetentionPolicy.SOURCE) public @interface ControllerType {
/**
* 仅用于第一次创建任务,后续可调用`#start()、#add()、#setHighestPriority()`方法。
*/
Class<StartController> START_CONTROLLER = StartController.class;
/**
* 用于后续的任务控制,后续可调用`#stop()、#resume()、#cancel()、#cancel(boolean)、#retry()、#restart()`方法。
*/
Class<NormalController> NORMAL_CONTROLLER = NormalController.class;
}

View File

@@ -19,6 +19,7 @@ import android.support.annotation.CheckResult;
import com.arialyy.aria.core.common.AbsNormalTarget;
import com.arialyy.aria.core.common.Suggest;
import com.arialyy.aria.core.common.ftp.FtpDelegate;
import com.arialyy.aria.core.manager.SubTaskManager;
import com.arialyy.aria.util.CommonUtil;
/**
@@ -77,4 +78,14 @@ public class FtpDirNormalTarget extends AbsNormalTarget<FtpDirNormalTarget> {
@Override public DownloadGroupEntity getEntity() {
return (DownloadGroupEntity) super.getEntity();
}
/**
* 获取子任务管理器
*
* @return 子任务管理器
*/
@CheckResult(suggest = Suggest.TASK_CONTROLLER)
public SubTaskManager getSubTaskManager() {
return mConfigHandler.getSubTaskManager();
}
}

View File

@@ -19,6 +19,7 @@ import android.support.annotation.CheckResult;
import com.arialyy.aria.core.common.AbsStartTarget;
import com.arialyy.aria.core.common.Suggest;
import com.arialyy.aria.core.common.ftp.FtpDelegate;
import com.arialyy.aria.core.manager.SubTaskManager;
import com.arialyy.aria.util.CommonUtil;
/**
@@ -79,4 +80,14 @@ public class FtpDirStartTarget extends AbsStartTarget<FtpDirStartTarget> {
@Override public DownloadGroupEntity getEntity() {
return (DownloadGroupEntity) super.getEntity();
}
/**
* 获取子任务管理器
*
* @return 子任务管理器
*/
@CheckResult(suggest = Suggest.TASK_CONTROLLER)
public SubTaskManager getSubTaskManager() {
return mConfigHandler.getSubTaskManager();
}
}

View File

@@ -51,7 +51,8 @@ public class IdGenerator {
public synchronized long nextId() {
long ts = timeGen();
if (ts < lastTs) {// 刚刚生成的时间戳比上次的时间戳还小,出错
throw new RuntimeException("时间戳顺序错误");
//throw new RuntimeException("时间戳顺序错误");
ts = nextTs(lastTs);
}
if (ts == lastTs) {// 刚刚生成的时间戳跟上次的时间戳一样则需要生成一个sequence序列号
// sequence循环自增