android - RxJava使用from操作符之后怎么每次发射数据时延迟一段时间

查看:347
本文介绍了android - RxJava使用from操作符之后怎么每次发射数据时延迟一段时间的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

为了使用RxJava实现在ImageView中每隔指定时间加载一张系统图片的效果,

Observable.from(getUri()).timer(2,TimeUnit.SECONDS).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(uri
-> {
            Log.e("uri",uri+"");
            Glide.with(this).load(uri).into(img);}); 
            }

在getUri()中返回了一个ArrayList<Uri>对象,然后每次发射一个uri到订阅者中,怎么让这个发射过程延迟调用。
使用timer操作符出现了以下错误:Unknown type class java.lang.Long. You must provide a Model of a type for which there is a registered ModelLoader, if you are using a custom model, you must first call Glide#register with a ModelLoaderFactory for your custom model class

解决方案

你这个错误貌似你Glide引起的,和Timer没什么关系把!

timer是延时发射函数,只执行一次。想要定时发送数据,试试interval函数:

Observable.interval(2, TimeUnit.SECONDS)
                  .map(new Func1<Long, String>() {
                      @Override
                      public String call(Long aLong) {
                          return getUrl();
                      }
                  })
                  .subscribe(new Subscriber<String>() {
                      @Override
                      public void onCompleted() {

                      }

                      @Override
                      public void onError(Throwable e) {

                      }

                      @Override
                      public void onNext(String o) {
                          Log.d("xxx interval with func", o);
                      }
                  });

这篇关于android - RxJava使用from操作符之后怎么每次发射数据时延迟一段时间的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆