public Observable<String> getRandomString() { return Observable.create(new Observable.OnSubscribe<String>() { @OverrIDe public voID call(Subscriber<? super String> subscriber) { //code to retrIEve result subscriber.onNext("this is a string"); subscriber.onCompleted(); } });}
我在演示者中订阅并将结果发布到视图中:
public voID loadRandomString() { Observable<String> observable = mService.getRandomString(); observable .observeOn(AndroIDSchedulers.mainThread()) .subscribeOn(Schedulers.newThread()) .subscribe(new Subscriber<String>() { @OverrIDe public voID onCompleted() { } @OverrIDe public voID onError(Throwable e) { mMainVIEw.onError(e.getLocalizedMessage()); } @OverrIDe public voID onNext(String string) { //do something with string } });}
这工作正常,但我希望这个 *** 作定期(每隔x分钟).我可以使用Timer或ScheduledThreadPoolExecutor一遍又一遍地执行此 *** 作,但我想看看是否在RxAndroID领域内有一些解决方案.我从2013年发现了一些旧的解决方案,但目前很多代码都被弃用了.这可能是使用某种递归,还是我能以更优雅的方式实现这一点?
提前致谢!
解决方法 你可能想要的是Observable.interval()
.它以定时间隔发出.然后,您可以将其平面映射到Observable< String>中,如下所示: Observable.interval(3,TimeUnit.MINUTES) .flatMap(new Func1<Long,Observable<String>>() { @OverrIDe public Observable<String> call(Long ignore) { return getRandomString(); } }) .subscribe(...insert your subscriber here...);
也就是说 – 如果你每隔几分钟就会这样做,你可能会更好地关注AlarmManager或JobScheduler,因为很长一段时间内用户不会专注于你的应用.
顺便说一句,使用Observable.just(“这是一个字符串”)要比Observable.create()容易得多.
总结以上是内存溢出为你收集整理的使用RxAndroid安排全部内容,希望文章能够帮你解决使用RxAndroid安排所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)