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
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
你这个错误貌似你Glide引起的,和Timer没什么关系把!
timer是延时发射函数,只执行一次。想要定时发送数据,试试interval函数:
对于定时任务,必然是从interval开始,不要老想着从数据开始
楼主的错误在于,timer是静态方法,前面的from(getUri())根本没起到作用,发送出来的不是图片地址,而是循环次数,类型是Long,丢给Glide后类型出错。
from完在走一个delay即可,具体api如下http://reactivex.io/RxJava/javadoc/rx/Observable.html#delay(rx.functions.Func1)