使用RxAndroid安排

我正在使用Rx Android observable来检索一些对象(在本例中为String).我的服务如下:
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...);

也就是说 – 如果你每隔几分钟就会这样做,你可能会更好地关注AlarmManagerJobScheduler,因为很长一段时间内用户不会专注于你的应用.

顺便说一句,使用Observable.just(“这是一个字符串”)要比Observable.create()容易得多.

相关文章

这篇“android轻量级无侵入式管理数据库自动升级组件怎么实现...
今天小编给大家分享一下Android实现自定义圆形进度条的常用方...
这篇文章主要讲解了“Android如何解决字符对齐问题”,文中的...
这篇文章主要介绍“Android岛屿数量算法怎么使用”的相关知识...
本篇内容主要讲解“Android如何开发MQTT协议的模型及通信”,...
本文小编为大家详细介绍“Android数据压缩的方法是什么”,内...