美文网首页
依赖于rxjava的定时器

依赖于rxjava的定时器

作者: sjj_dot | 来源:发表于2018-11-14 16:35 被阅读0次
import android.support.annotation.NonNull;

import java.util.concurrent.TimeUnit;

import io.reactivex.Scheduler;
import io.reactivex.disposables.Disposable;
import io.reactivex.functions.Consumer;
import io.reactivex.schedulers.Schedulers;
import sjj.alog.Log;

/**
 *
 * 通用定时任务。rxjava
 * @author shenjianjun
 *
 */
public final class ThreadPool {
    private ThreadPool() {
    }

    public static Disposable submit(@NonNull Scheduler scheduler, @NonNull final Runnable runnable, @NonNull final Consumer<Throwable> consumer) {
        return scheduler.scheduleDirect(() -> {
            try {
                runnable.run();
            } catch (Exception e) {
                try {
                    consumer.accept(e);
                } catch (Exception ignored) {
                }
            }
        });
    }

    public static Disposable submit(@NonNull Runnable runnable, @NonNull Consumer<Throwable> consumer) {
        return submit(Schedulers.computation(), runnable, consumer);
    }

    public static Disposable submit(@NonNull Scheduler scheduler, @NonNull final Runnable runnable) {
        return submit(scheduler, runnable, throwable -> Log.e("pool error", throwable));
    }

    public static Disposable submit(@NonNull final Runnable runnable) {
        return submit(Schedulers.computation(), runnable);
    }

    public static Disposable submit(@NonNull Scheduler scheduler, @NonNull final Runnable run, long delay, @NonNull final Consumer<Throwable> consumer) {
        return scheduler.scheduleDirect(() -> {
            try {
                run.run();
            } catch (Exception e) {
                try {
                    consumer.accept(e);
                } catch (Exception ignored) {
                }
            }
        }, delay, TimeUnit.MILLISECONDS);
    }

    public static Disposable submit(@NonNull Runnable runnable, long delay, @NonNull Consumer<Throwable> consumer) {
        return submit(Schedulers.computation(), runnable, delay, consumer);
    }

    public static Disposable submit(@NonNull Scheduler scheduler, @NonNull final Runnable runnable, long delay) {
        return submit(scheduler, runnable, delay, throwable -> Log.e("pool error", throwable));
    }

    public static Disposable submit(@NonNull final Runnable runnable, long delay) {
        return submit(Schedulers.computation(), runnable, delay);
    }

    public static Disposable submit(@NonNull Scheduler scheduler, @NonNull final Runnable run, final long initialDelay, final long period, @NonNull final Consumer<Throwable> consumer) {
        return scheduler.schedulePeriodicallyDirect(() -> {
            try {
                run.run();
            } catch (Exception e) {
                try {
                    consumer.accept(e);
                } catch (Exception ignored) {
                }
            }
        }, initialDelay, period, TimeUnit.MILLISECONDS);
    }

    public static Disposable submit(@NonNull Runnable runnable, final long initialDelay, final long period, @NonNull Consumer<Throwable> consumer) {
        return submit(Schedulers.computation(), runnable, initialDelay, period, consumer);
    }

    public static Disposable submit(@NonNull Scheduler scheduler, @NonNull final Runnable runnable, final long initialDelay, final long period) {
        return submit(scheduler, runnable, initialDelay, period, throwable -> Log.e("pool error", throwable));
    }

    public static Disposable submit(@NonNull final Runnable runnable, final long initialDelay, final long period) {
        return submit(Schedulers.computation(), runnable, initialDelay, period);
    }
}

相关文章

  • 依赖于rxjava的定时器

  • RxJava2.x实现定时器

    在之前我已经写过一篇关于Rxjava1.x的定时器功能,想了解的同学可以移步Rxjava1.x实现定时器 前言 由...

  • 内存管理

    CADisplayLink,NSTimer使用注意 GCD定时器 NSTimer依赖于RunLoop,如果RunL...

  • RxJava操作符

    本文参考这可能是最好的RxJava 2.x 教程(完结版) RxJava 2.x 拥有了新的特性,其依赖于4个基础...

  • 多线程:GCD定时器

    GCD定时器 NSTimer依赖于RunLoop,如果RunLoop的任务过于繁重,可能会导致NSTimer不准时...

  • [自用]Android文件工具类

    异步的部分依赖于RxJava,项目中不使用的话替换为自己的异步操作即可。isEmpty(File file,boo...

  • Objective - C 内存管理(二)GCD定时器

    GCD定时器的使用场景 NSTimer依赖于RunLoop,如果RunLoop的任务过于繁重,可能会导致NSTim...

  • 使用RxJava实现定时器功能

    使用RxJava实现定时器功能可以通过两种方式来实现,具体实现如下: 一、使用timer 操作符 二、使用使用in...

  • RxLifecycle使用分析

    一、针对的问题解决rxjava在页面销毁的时候没有取消订阅的内存泄漏问题。比如业务中有接口定时器轮询的功能,之前用...

  • Rxjava interval 与flatmap结合异常处理

    通常在Rxjava中我会用interval当定时器与flatmap结合发起网络请求.在项目中的实际需求是每两个小时...

网友评论

      本文标题:依赖于rxjava的定时器

      本文链接:https://www.haomeiwen.com/subject/bpmjfqtx.html