[关闭]
@yudesong 2018-02-12T03:13:51.000000Z 字数 1768 阅读 810

xUtils 源码解析(二)

xUtils


接下来我们看看task模块下有哪些类。
屏幕快照 2018-01-28 14.35.02.png

  1. public enum Priority {
  2. UI_TOP,
  3. UI_NORMAL,
  4. UI_LOW,
  5. DEFAULT,
  6. BG_TOP,
  7. BG_NORMAL,
  8. BG_LOW;
  9. }
  1. public interface TaskHandler {
  2. boolean supportPause();
  3. boolean supportResume();
  4. boolean supportCancel();
  5. void pause();
  6. void resume();
  7. void cancel();
  8. boolean isPaused();
  9. boolean isCancelled();
  10. }
  1. public class PriorityObject<E> {
  2. public final Priority priority;
  3. public final E obj;
  4. public PriorityObject(Priority priority, E obj) {
  5. this.priority = priority == null ? Priority.DEFAULT : priority;
  6. this.obj = obj;
  7. }
  8. }
  1. public class PriorityRunnable extends PriorityObject<Runnable> implements Runnable {
  2. public PriorityRunnable(Priority priority, Runnable obj) {
  3. super(priority, obj);
  4. }
  5. @Override
  6. public void run() {
  7. this.obj.run();
  8. }
  9. }
  1. public class PriorityExecutor implements Executor {
  2. private static final ThreadFactory sThreadFactory = new ThreadFactory() {
  3. private final AtomicInteger mCount = new AtomicInteger(1);
  4. @Override
  5. public Thread newThread(Runnable r) {
  6. return new Thread(r, "PriorityExecutor #" + mCount.getAndIncrement());
  7. }
  8. };
  9. private final BlockingQueue<Runnable> mPoolWorkQueue = new PriorityObjectBlockingQueue<Runnable>();
  10. private final ThreadPoolExecutor mThreadPoolExecutor;
  11. public PriorityExecutor() {
  12. this(CORE_POOL_SIZE);
  13. }
  14. public PriorityExecutor(int poolSize) {
  15. mThreadPoolExecutor = new ThreadPoolExecutor(
  16. poolSize,
  17. MAXIMUM_POOL_SIZE,
  18. KEEP_ALIVE,
  19. TimeUnit.SECONDS,
  20. mPoolWorkQueue,
  21. sThreadFactory);
  22. }
  23. public boolean isBusy() {
  24. return mThreadPoolExecutor.getActiveCount() >= mThreadPoolExecutor.getCorePoolSize();
  25. }
  26. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注