RxJava 备注
RxJava是一个采用观察者模式的异步框架,本文给出几个基本的使用例子。
1、配置依赖:
compile 'io.reactivex:rxjava:1.0.14'
compile 'io.reactivex:rxandroid:1.0.1'
2、基础(发布、订阅):
observable = Observable.create(new Observable.OnSubscribe<String>() { @Override public void call(Subscriber<? super String> subscriber) { subscriber.onNext("Step1"); subscriber.onNext("Step2"); subscriber.onNext("Step3"); subscriber.onCompleted(); } }); subscriber = new Subscriber<String>() { @Override public void onStart(){ System.out.println("onStart"); } @Override public void onCompleted() { System.out.println("onCompleted"); } @Override public void onError(Throwable e) { System.out.println("onError"); } @Override public void onNext(String s) { System.out.println("onNext"+s); } }; FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); fab.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { observable.subscribe(subscriber); } });
3、采用action的写法
Action1<String> onNextAction = new Action1<String>() { @Override public void call(String s) { System.out.println("onNextAction" + s); } }; Action1<Throwable> onErrorAction = new Action1<Throwable>() { @Override public void call(Throwable throwable) { System.out.println("onErrorAction"); } }; Action0 onCompletedAction = new Action0() { @Override public void call() { System.out.println("onCompletedAction"); } }; //from表示从一个数组中取参数 Observable.just("Step1","Step2") .subscribe(onNextAction,onErrorAction,onCompletedAction);
4、Schedule接口
//Schedulers.immediate():默认值,当前线程
//Schedulers.computation():用以CPU密集型任务,固定线程池
//Schedulers.io():IO操作,不固定线程池
//Schedulers.newThread()://新线程
Observable.just("Step1","Step2")
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread()) //主线程
.subscribe(onNextAction, onErrorAction, onCompletedAction);
5、参数映射
List<String> input = new ArrayList<String>(); input.add("hello "); input.add("world"); Observable.just(input) .map(new Func1<List<String>, String>() { @Override public String call(List<String> input) { StringBuffer buffer = new StringBuffer(); for (String item : input) { buffer.append(item); } return buffer.toString(); } }) .subscribe(new Action1<String>() { @Override public void call(String str) { System.out.println(str); } });
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)