鼓捣RxAndroid--介绍 学习响应式编程的简单方法
2016-06-10 14:15
423 查看
原文链接https://medium.com/crunching-rxandroid/crunching-rxandroid-intro-c27eb6f009ea#.31nlj43o2
几个月前,我读了Dan Lew写的一系列令人难以置信的文章,之后,我决定自己是试试这个框架,并分享我每天收获的知识。
如果你想跳过这部分,请从GitHub下载基础工程。
这部分,我们将看到这个范例中的两个基本组件:Observables和Subscribers。前者将发出任意数量的项目给所有正在监听变化的订阅者。
一开始的主要想法是一个Observable释放Hello,World字符串,接着停止执行:
下一步是创建一对Subscriber:一个会把接收的字符串作为参数来改变TextView的值,另一个将创建一个Toast并显示它。
最后,我们只需要封装逻辑:需要使我们的Observable在主线程里返回它的值,接着添加那些Subscriber,这样当需要时(就是有人开始观察它的时候),Observable就会开始释放项目。
需要在主线程上观察的背后原因是,我们想改变Android的UI…,这样做你就不想在适当的线程上工作!
如果你想深入查看代码(尽管没有多少),你可以从这里下载zip文件,或者克隆这个repo,将与新的发现一并更新。
请继续关注下一集。
几个月前,我读了Dan Lew写的一系列令人难以置信的文章,之后,我决定自己是试试这个框架,并分享我每天收获的知识。
开始吧
首先,创建一个新的Android工程,在build脚本中增加RxAndroid依赖。compile ‘io.reactivex:rxandroid:0.24.0'
如果你想跳过这部分,请从GitHub下载基础工程。
鼓捣代码
乍一看,响应式编程可能非常棘手,但一小会儿后,你几乎不费劲就见识到了所有魔力。让我们深入到代码吧!这部分,我们将看到这个范例中的两个基本组件:Observables和Subscribers。前者将发出任意数量的项目给所有正在监听变化的订阅者。
一开始的主要想法是一个Observable释放Hello,World字符串,接着停止执行:
Observable.OnSubscribe observableAction = new Observable.OnSubscribe<String>() { public void call(Subscriber<? super String> subscriber) { subscriber.onNext(“Hello, World!”); subscriber.onCompleted(); } }; Observable<String> observable = Observable.create(observableAction);
下一步是创建一对Subscriber:一个会把接收的字符串作为参数来改变TextView的值,另一个将创建一个Toast并显示它。
Subscriber<String> textViewSubscriber = new Subscriber<String>() { public void onCompleted() {} public void onError(Throwable e) {} public void onNext(String s) { txtPart1.setText(s); } }; Subscriber<String> toastSubscriber = new Subscriber<String>() { public void onCompleted() {} public void onError(Throwable e) {} public void onNext(String s) { Toast.makeText(context, s, Toast.LENGTH_SHORT).show(); } };
最后,我们只需要封装逻辑:需要使我们的Observable在主线程里返回它的值,接着添加那些Subscriber,这样当需要时(就是有人开始观察它的时候),Observable就会开始释放项目。
需要在主线程上观察的背后原因是,我们想改变Android的UI…,这样做你就不想在适当的线程上工作!
observable.observeOn(AndroidSchedulers.mainThread()); observable.subscribe(textViewSubscriber); observable.subscribe(toastSubscriber);
如果你想深入查看代码(尽管没有多少),你可以从这里下载zip文件,或者克隆这个repo,将与新的发现一并更新。
请继续关注下一集。
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories