当前位置:   article > 正文

Rxjava RxAndroid_io.reactivex.rxjava2:rxandroid:2.1.1

io.reactivex.rxjava2:rxandroid:2.1.1

官网:

api 'io.reactivex.rxjava2:rxandroid:2.1.1'
api 'io.reactivex.rxjava2:rxjava:2.2.12'

RxJava:

1、引入java 1.8,或者在根目录做统一管理也可以

2、被观察者跟观察者的处理

  1. Observable.just("123").subscribe {
  2. Log.e("msg",it)
  3. }

 

3、变换(操作符):把一个事件转换为另一个事件

Map

普通

  1. Observable.just("你是")
  2. .map(new Func1<String, String>() {
  3. @Override
  4. public String call(String s) {
  5. return s + " 张三疯";
  6. }
  7. })
  8. .subscribe(s -> System.out.println(s));

lambda

  1. Observable.just("你是:","还是:")
  2. .observeOn(AndroidSchedulers.mainThread())
  3. .subscribeOn(Schedulers.io())
  4. .map { "${it}张三疯" }
  5. .subscribe { Log.e("msg",it) }

 

from

 

flatMap

 

filter():滤掉那些不满足检查条件的。

 

take(): 输出最多指定数量的结果

 

4、调度器(线程切换)

 

 

5、RxAndroid:

AndroidObservable

图片加载:

  1. AndroidObservable.bindActivity(this, retrofitService.getImage(url)) .subscribeOn(Schedulers.io())
  2. .subscribe(bitmap -> myImageView.setImageBitmap(bitmap);

广播监听网路变换:

  1. IntentFilter filter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);
  2. AndroidObservable.fromBroadcast(context, filter)
  3. .subscribe(intent -> handleConnectivityChange(intent));

View的监听:

  1. ViewObservable.clicks(mCardNameEditText, false)
  2. .subscribe(view -> handleClick(view));

 

RxView(RxTextView、RxRadioGroup....):防止按钮重复点击、响应式的界面等


RxView.clicks(button)
              .throttleFirst(1, TimeUnit.SECONDS)
              .subscribe(new Observer<Object>() {
                  @Override
                  public void onCompleted() {
                        log.d ("completed");
                  }
 
                  @Override
                  public void onError(Throwable e) {
                        log.e("error");
                  }
 
                  @Override
                  public void onNext(Object o) {
                       log.d("button clicked");
                  }
              });

 

RxBus:消息传递

 

combineLatest:合并节点-所有输入信息(邮箱、密码、电话号码等)合法才点亮注册按钮

 

merge:合并两个数据源

 

使用concat和first做缓存

 

定时器

  1. Observable.timer(2, TimeUnit.SECONDS)
  2.               .subscribe(new Observer<Long>() {
  3.                   @Override
  4.                   public void onCompleted() {
  5.                       log.d ("completed");
  6.                   }
  7.  
  8.                   @Override
  9.                   public void onError(Throwable e) {
  10.                       log.e("error");
  11.                   }
  12.  
  13.                   @Override
  14.                   public void onNext(Long number) {
  15.                       log.d ("hello world");
  16.                   }
  17.               });


interval:周期性操作

例如:每隔2秒输出日志“helloworld”。

  1. Observable.interval(2, TimeUnit.SECONDS)
  2. .subscribe(new Observer<Long>() {
  3. @Override
  4. public void onCompleted() {
  5. log.d ("completed");
  6. }
  7. @Override
  8. public void onError(Throwable e) {
  9. log.e("error");
  10. }
  11. @Override
  12. public void onNext(Long number) {
  13. log.d ("hello world");
  14. }
  15. });

schedulePeriodically做轮询请求

  1. Observable.create(new Observable.OnSubscribe<String>() {
  2. @Override
  3. public void call(final Subscriber<? super String> observer) {
  4. Schedulers.newThread().createWorker()
  5. .schedulePeriodically(new Action0() {
  6. @Override
  7. public void call() {
  8. observer.onNext(doNetworkCallAndGetStringResult());
  9. }
  10. }, INITIAL_DELAY, POLLING_INTERVAL, TimeUnit.MILLISECONDS);
  11. }
  12. }).subscribe(new Action1<String>() {
  13. @Override
  14. public void call(String s) {
  15. log.d("polling….”));
  16. }
  17. })

 

 

 

 

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/300816
推荐阅读
相关标签
  

闽ICP备14008679号