compile 'io.reactivex:rxandroid:1.2.1' compile 'io.reactivex:rxjava:1.1.9' compile 'com.jakewharton.rxbinding:rxbinding:0.4.0'
private Subscriber<? super View> msubscriber; private Button btn; private ImageView image; private Bitmap bitmap; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btn = findViewById(R.id.btn); image = findViewById(R.id.image); RxAndroidBase(); RxAndroidFillterStream(); //操作集合每一个数据 RxAndroidFrom(); //操作整个集合 RxAndroidJust(); RxAndroidMapStream(); RxAndroidThread(); RxAndroidGetPic(); } private void RxAndroidGetPic() { Observable.just("http://c.hiphotos.baidu.com/image/pic/item/8601a18b87d6277f44cd34f221381f30e824fc19.jpg") .map(new Func1<String, Bitmap>() { @Override public Bitmap call(String s) { try { URL url = new URL(s); InputStream inputStream = url.openStream(); bitmap = BitmapFactory.decodeStream(inputStream); } catch (Exception e) { e.printStackTrace(); } return bitmap; } }) //被观察者 .subscribeOn(Schedulers.io()) //观察者 .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Action1<Bitmap>() { @Override public void call(Bitmap bitmap) { Log.d("MainActivity", "bitmap:" + bitmap); image.setImageBitmap(bitmap); } }); } private void RxAndroidThread() { Observable<String> objectObservable = Observable.create(new Observable.OnSubscribe<String>() { @Override public void call(Subscriber<? super String> subscriber) { String name = Thread.currentThread().getName(); Log.i("thread", name); subscriber.onCompleted(); } }); Subscriber<String> thread = new Subscriber<String>() { @Override public void onCompleted() { String name = Thread.currentThread().getName(); Log.i("被观察者", name); } @Override public void onError(Throwable e) { } @Override public void onNext(String s) { } }; objectObservable .subscribeOn(Schedulers.io()) //指定观察者的线程 .observeOn(Schedulers.io()) .subscribe(thread); } private void RxAndroidOnclick() { Observable.create(new MySubscribe(btn)) .throttleFirst(1, TimeUnit.SECONDS) .subscribe(new Action1<View>() { @Override public void call(View view) { Log.i("+++", "有效的点击事件"); } }); } private void RxAndroidMapStream() { List<Integer> list = Arrays.asList(1, 6, 7, 5, 9); Observable.from(list) .map(new Func1<Integer, String>() { @Override public String call(Integer integer) { return integer.toString(); } }) .subscribe(new Action1<String>() { @Override public void call(String s) { Log.i("+++", s); } }); } private void RxAndroidJust() { List<Integer> list = Arrays.asList(1, 6, 7, 5, 9); Observable.just(list) .subscribe(new Action1<List<Integer>>() { @Override public void call(List<Integer> integers) { Log.i("+++", integers + ""); } }); } private void RxAndroidFrom() { List<Integer> list = Arrays.asList(1, 6, 7, 5, 9); Observable.from(list) .subscribe(new Action1<Integer>() { @Override public void call(Integer integer) { Log.i("---", integer + ""); } }); } private void RxAndroidFillterStream() { List<Integer> list = Arrays.asList(1, 6, 7, 5, 9); Observable.from(list) .filter(new Func1<Integer, Boolean>() { @Override public Boolean call(Integer integer) { return integer < 7; } }) .subscribe(new Action1<Integer>() { @Override public void call(Integer integer) { Log.i("-----", "" + integer); } }); } private void RxAndroidBase() { Observable<String> stringObservable = Observable.create(new Observable.OnSubscribe<String>() { @Override public void call(Subscriber<? super String> subscriber) { subscriber.onNext("LXR"); subscriber.onNext("欣茹"); subscriber.onNext("刘欣茹大美女"); subscriber.onCompleted(); subscriber.onError(new Throwable()); } }); Subscriber<String> stringSubscriber = new Subscriber<String>() { @Override public void onStart() { super.onStart(); Log.i("---", "运行开始"); } @Override public void onCompleted() { Log.i("---", "运行中完成"); } @Override public void onError(Throwable e) { Log.i("---", "运行中的错误" + e); } @Override public void onNext(String s) { Log.i("---", s); } }; stringObservable.subscribe(stringSubscriber); } public void dian(View view) { RxAndroidOnclick(); } class MySubscribe implements Observable.OnSubscribe<View> { public MySubscribe(View view) { view.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Log.i("-----", "我被点击了"); } }); } @Override public void call(Subscriber<? super View> subscriber) { msubscriber = subscriber; } }