3 回答

TA贡献1876条经验 获得超5个赞
你这个错误貌似你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);
}
});

TA贡献1810条经验 获得超4个赞
对于定时任务,必然是从interval开始,不要老想着从数据开始
public void loop() {
final List<String> images = getUri();//图片列表
Observable.interval(0, 2, TimeUnit.SECONDS)//每2秒执行1次,第一次立即执行
.map(i -> images.get(i.intValue() % images.size()))//把循环次数变成图片路径
.subscribe(uri -> Glide.with(ctx).load(uri).into(img));//调用Glide
}
楼主的错误在于,timer是静态方法,前面的from(getUri())根本没起到作用,发送出来的不是图片地址,而是循环次数,类型是Long,丢给Glide后类型出错。
添加回答
举报