package com.shizhefei.task; import com.shizhefei.mvc.RequestHandle; import java.lang.ref.WeakReference; /** * 用于取消task,判断task是否执行 */ public class TaskHandle implements RequestHandle { private final WeakReference<Object> taskReference; private final int type; private WeakReference<TaskHelper.MultiTaskBindProxyCallBack> taskImpWeakReference; public static final int TYPE_RUN = 1; public static final int TYPE_CACHE = 2; public static final int TYPE_ATTACH = 3; public TaskHandle(int type, Object exeTask, TaskHelper.MultiTaskBindProxyCallBack taskImp) { this.type = type; this.taskReference = new WeakReference<>(exeTask); if (taskImp != null) { taskImpWeakReference = new WeakReference<>(taskImp); } } @Override public void cancle() { if (taskImpWeakReference == null) { return; } TaskHelper.MultiTaskBindProxyCallBack taskImp = taskImpWeakReference.get(); Object task = taskReference.get(); if (taskImp == null || task == null) { return; } taskImp.cancel(task); } // public void cancelAllTaskBinder() { // if (taskImpWeakReference == null) { // return; // } // TaskHelper.MultiTaskBindProxyCallBack taskImp = taskImpWeakReference.get(); // if (taskImp != null) { // taskImp.cancelAllTaskBinder(); // } // } public int getRunType() { return type; } @Override public boolean isRunning() { if (taskImpWeakReference == null) { return false; } TaskHelper.MultiTaskBindProxyCallBack taskImp = taskImpWeakReference.get(); if (taskImp != null) { return taskImp.isRunning(); } return false; } }