| | |
| | | * 保存发送的每个回调消息的监听实例,key为回调标识callbackId,这样回调消息有反馈的时候,就可以找到并调用 |
| | | * 对应的监听对象 |
| | | */ |
| | | private Map<String, SuperCallBack> callbacks = new HashMap<>(); |
| | | private volatile Map<String, SuperCallBack> callbacks = new HashMap<>(); |
| | | /** |
| | | * 保存需要进行超时检测的请求,这是一个延时队列,元素超时的时候会被取出来 |
| | | */ |
| | |
| | | timeoutExecutor.execute(new Runnable() { |
| | | @Override |
| | | public void run() { |
| | | LogUtil.d("任务超时轮询"); |
| | | try { |
| | | // 只有超时的元素才会被取出,没有的话会被等待 |
| | | timeoutItem item = timeoutQueue.take(); |
| | | if (item != null) { |
| | | LogUtil.d("超时任务ID:" + item.callbackId); |
| | | SuperCallBack callBack = callbacks.remove(item.callbackId); |
| | | if (callBack != null) |
| | | if (callBack != null) { |
| | | LogUtil.d("超时任务ID:" + item.callbackId + "callBack != null"); |
| | | callBack.onError(new RequestTimeOutException("request timeout")); |
| | | }else { |
| | | LogUtil.d("超时任务ID:" + item.callbackId + " callBack == null"); |
| | | } |
| | | } |
| | | } catch (InterruptedException e) { |
| | | e.printStackTrace(); |