RxJava工具类
来源:互联网 发布:没有网站外链好优化么 编辑:程序博客网 时间:2024/06/05 17:32
为了快速实现在UI线程或者IO线程中工作,实现了一下工具类。当时参考了许多博客,可惜当时没有记录,现在也回忆不起来了。写在这里以备以后的使用。
1 RxjavaUtil.java
/** * Rxjava封装工具类 */public class RxjavaUtil { /** * 在ui线程中工作 * @param uiTask */ public static <T> void doInUIThread(IUITask uiTask) { Observable.just(uiTask) .observeOn(AndroidSchedulers.mainThread()) .subscribe(uitask -> uitask.doInUIThread(), throwable -> throwable.printStackTrace()); } /*** * 在IO线程中执行任务 * @param <T> */ public static <T> void doInIOThread(IIOTask ioTask) { Observable.just(ioTask) .observeOn(Schedulers.io()) .subscribe(ioTask1 -> ioTask1.doInIOThread(), throwable -> throwable.printStackTrace()); } /** * 执行Rx通用任务 (IO线程中执行耗时操作 执行完成调用UI线程中的方法) */ public static <T> void executeRxTask(CommonRxTask<T> t) { CommonRxTask.MyOnSubscribe<CommonRxTask<T>> onsubscribe = new CommonRxTask.MyOnSubscribe<CommonRxTask<T>>(t) { @Override public void call(Subscriber<? super CommonRxTask<T>> subscriber) { getC().doInIOThread(); subscriber.onNext(getC()); subscriber.onCompleted(); } }; Observable.create(onsubscribe) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(t1 -> t1.doInUIThread(), throwable -> throwable.printStackTrace()); }}
2 ICommonRxTask.java
/** * 通用任务接口 */public interface ICommonRxTask { /** * 在IO线程执行 */ void doInIOThread(); /** * 在UI线程执行 */ void doInUIThread();}
3 CommonRxTask.java
/** * 通用的Rx执行任务 */public abstract class CommonRxTask<T> implements ICommonRxTask { public CommonRxTask(T t) { this.t = t; } protected T t; /** * 在IO线程执行 */ public void doInIOThread() { } /** * 在UI线程执行 */ public void doInUIThread() { } public static abstract class MyOnSubscribe<C> implements Observable.OnSubscribe<C> { private C c; public MyOnSubscribe(C c) { this.c = c; } public C getC() { return c; } public void setC(C c) { this.c = c; } }}
4 IIOTask.java
/** * IO任务接口 */public interface IIOTask { void doInIOThread();}
5 IOTask.java
/** * 在IO线程中执行的任务 */public abstract class IOTask<T> implements IIOTask { protected T t; public IOTask(T t) { this.t = t; } public IOTask() { } public abstract void doInIOThread();}
6 IUITask.java
/** * UI任务接口 */public interface IUITask { void doInUIThread();}
7 UITask.java
/** * 在主线程中执行的任务 */public abstract class UITask<T> implements IUITask { protected T t; public UITask(T t) { this.t = t; } public UITask() { }}
8 使用
RxjavaUtil.doInUIThread(() -> {//此处在UI线程执行});RxjavaUtil.doInIOThread(()->{//此处在IO线程中});
阅读全文
0 0
- RxJava工具类
- Retrofit+Rxjava请求工具类
- Android基于Retrofit2.0 +RxJava 封装的超好用的RetrofitClient工具类(六)
- Android基于Retrofit2.0 封装的超好用的RetrofitClient工具类(完美结合RxJava)
- 安卓开发框架(MVP+主流框架+基类+工具类)--- Retrofit+RxJava
- 【RxJava】走进RxJava 从关键类开始
- Rxjava(创建类)--just1
- Rxjava(创建类)--just2
- Rxjava(创建类)--from
- Rxjava(创建类)--defer
- Rxjava(创建类)--Empty
- Rxjava(创建类)--Never
- Rxjava(创建类)--error
- Rxjava(创建类)--Interval
- Rxjava(创建类)--Range
- Rxjava(创建类)--Repeat
- Rxjava(创建类)--start
- Rxjava(创建类)--timer
- CSS的三种引用方式
- Android4.4源码添加系统自定义服务
- 2.关于Apache Spark
- 51Nod-1595-回文度
- 107-109_容器_自己实现HashMap_Map底层实现_哈希算法实现_使用数组和链表
- RxJava工具类
- iBATIS 动态insert插入语句+特殊字符过滤
- 富客户端与瘦客户端
- session过期(springMVC)
- STL之set
- Codeforces Round #426 (Div. 2) C. The Meaningless Game C. The Meaningless Game
- GPRM/GNRMC定位信息的读取与解析(3)
- openfire源码在eclipse中运行,Failed to load admin-sidebar.xml file from Openfire classes
- 使用JDBC连接MySQL数据库的工具类