RxJava 实践
2016-04-15 18:13
363 查看
参考文章:1.深入浅出RxJava
2.给 Android 开发者的 RxJava 详解
响应式编程越来越流行了,RxJava这种既能优化代码,又能增加用户体验的的的编码库,在不学习一下就落后啦。今天网上搜罗了一些大牛的博客,边看边敲以便,感受了下Rx编程。在记录一下~~
2.给 Android 开发者的 RxJava 详解
响应式编程越来越流行了,RxJava这种既能优化代码,又能增加用户体验的的的编码库,在不学习一下就落后啦。今天网上搜罗了一些大牛的博客,边看边敲以便,感受了下Rx编程。在记录一下~~
package com.chs.myrxjavaandretrofit.rxjava; import android.app.Activity; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.ImageView; import android.widget.Toast; import com.chs.myrxjavaandretrofit.R; import rx.Observable; import rx.Subscriber; import rx.android.schedulers.AndroidSchedulers; import rx.functions.Action1; import rx.functions.Func1; import rx.schedulers.Schedulers; /** * 作者:chs on 2016/3/31 15:14 * 邮箱:657083984@qq.com */ public class RxJavaActivity extends Activity implements View.OnClickListener { private Button btn_1, btn_2, btn_3, btn_4,btn_5,btn_6; private String[] arrs = new String[]{"天空", "大海", "森林", "高山"}; private ImageView iv_img; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_rx_java); initView(); initEvent(); } private void initEvent() { btn_1.setOnClickListener(this); btn_2.setOnClickListener(this); btn_3.setOnClickListener(this); btn_4.setOnClickListener(this); btn_5.setOnClickListener(this); btn_6.setOnClickListener(this); } private void initView() { btn_1 = (Button) findViewById(R.id.btn_1); btn_2 = (Button) findViewById(R.id.btn_2); btn_3 = (Button) findViewById(R.id.btn_3); btn_4 = (Button) findViewById(R.id.btn_4); btn_5 = (Button) findViewById(R.id.btn_5); btn_6 = (Button) findViewById(R.id.btn_6); iv_img = (ImageView) findViewById(R.id.iv_img); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.btn_1://正常用法 定义一个观察者和一个订阅者 Observable<String> observable = Observable.create(new Observable.OnSubscribe<String>() { @Override public void call(Subscriber<? super String> subscriber) { subscriber.onNext("hello world"); subscriber.onCompleted(); } }); Subscriber<String> subscriber = new Subscriber<String>() { @Override public void onCompleted() { } @Override public void onError(Throwable e) { } @Override public void onNext(String s) { Toast.makeText(RxJavaActivity.this, s, Toast.LENGTH_SHORT).show(); } }; observable.subscribe(subscriber); break; case R.id.btn_2://简介用法 Observable<String> observable1 = Observable.just("哈哈我真简单"); Action1<String> action1 = new Action1<String>() { @Override public void call(String s) { Toast.makeText(RxJavaActivity.this, s, Toast.LENGTH_SHORT).show(); } }; observable1.subscribe(action1); break; case R.id.btn_3://操作符 map Observable.just("哈哈") .map(new Func1<String, Object>() { @Override public Object call(String s) { return s + "嘿嘿"; } }) .subscribe(new Action1<Object>() { @Override public void call(Object o) { Toast.makeText(RxJavaActivity.this, o.toString(), Toast.LENGTH_SHORT).show(); } }); break; case R.id.btn_4://依次列出 Observable.from(arrs).subscribe(new Action1<String>() { //依次输出数组中的数据 @Override public void call(String s) { Toast.makeText(RxJavaActivity.this, s, Toast.LENGTH_SHORT).show(); } }); break; case R.id.btn_5://筛选 Observable.just("哈哈") .flatMap(new Func1<String, Observable<?>>() { @Override public Observable<?> call(String s) { return Observable.from(arrs); } }) .filter(new Func1<Object, Boolean>() { @Override public Boolean call(Object o) { return "天空".equals(o.toString()); } }) .subscribe(new Action1<Object>() { @Override public void call(Object o) { Toast.makeText(RxJavaActivity.this, o.toString(), Toast.LENGTH_SHORT).show(); } }); break; case R.id.btn_6://android io线程 Observable.just(getResources().getDrawable(R.mipmap.girl)) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Action1<Drawable>() { @Override public void call(Drawable drawable) { iv_img.setImageDrawable(drawable); } }); break; } } }Observable 是顺序执行 执行完一个之后再执行下面的.
相关文章推荐
- java使用线程请求访问每次间隔10分钟连续5次,之后停止请求
- java使用线程请求访问每次间隔10分钟连续5次,之后停止请求
- JAVA第五次作业
- Java线程安全 - 线程(3)
- Java日期差计算天数
- 对springMVC的简单理解
- java的输入输出及相关快捷键
- Java之从键盘输入值赋给变量
- 各种排序算法的分析及java实现
- Java中有关Null的9件事
- JavaMail API细节详细解析大全
- 基于Activiti5工作流实战企业协同OA办公系统(spring-data-jpa、uur前台组件)
- java持久层框架mybatis如何防止sql注入
- java 调用Quartz 不同版本使用分析 1.6x 、1.7x、1.8x
- Java第五次作业
- Java核心技术点之动态代理
- java持久层框架mybatis如何防止sql注入
- JAVA得到一个指定日期六个月后的日期例子
- Ubuntu下eclipse按alt+/没有自动补全代码功能
- java持久层框架mybatis如何防止sql注入