package com.example.iot_controlhost.model.thread;

import com.example.iot_controlhost.base.BaseQueue;
import com.example.iot_controlhost.base.IRxIOTask;
import com.xuexiang.rxutil2.rxjava.RxJavaUtils;
import com.xuexiang.rxutil2.rxjava.impl.IRxUITask;
import com.xuexiang.rxutil2.rxjava.task.RxUITask;

/**
 * 任务队列-IO与UI任务相继执行
 * @param <T> 任务返回值类型
 */
public abstract class QueueIOUITask<T> extends BaseQueue implements IRxIOTask<T>, IRxUITask<T> {

    @Override
    public void run() {
        try {
            T outData = doInQueueThread();
            RxJavaUtils.doInUIThread(new RxUITask<T>(outData) {
                @Override
                public void doInUIThread(T o) {
                    QueueIOUITask.this.doInUIThread(o);
                }
            });
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}
