android - 使用 .just() 运算符时如何添加延迟

标签 android rx-java rx-android rx-java2

我使用 .just() 运算符编写了一个 Observable,如下面的代码所示。 我要做的是,为运算符添加延迟,以便在将 Integer 值发送给观察者之前,它应该被延迟几秒钟

类似于:

mAsyncObservable = rx.Observable.create(new rx.Observable.OnSubscribe<Integer>() {
        @Override
        public void call(Subscriber<? super Integr> subscriber) {
            SystemClock.sleep(3000);

            subscriber.onNext(10);
            subscriber.onCompleted();
        }
    });

如何使用 .just() 运算符转换相同的代码?

代码:

Subscriber<Integer> integerSubscriber = new Subscriber<Integer>() {
    private final String SubscriberTag = "integerSubscriber";
    @Override
    public void onStart() {
        super.onStart();
        Log.w(TAG, "onStart->" + SubscriberTag);
    }

    @Override
    public void onCompleted() {
        Log.w(TAG, "onCompleted->" + SubscriberTag);
    }

    @Override
    public void onError(Throwable e) {
        Log.w(TAG, "onError->" + SubscriberTag + e.getMessage().toString());
    }

    @Override
    public void onNext(Integer i) {
        Log.w(TAG, "onNext->" + SubscriberTag + "after processing " + i);
    }
};

 @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


    rx.Observable<Integer> integerObservable = rx.Observable.just(10);
    integerObservable.subscribe(integerSubscriber);
}

最佳答案

你可以使用它:

Observable.just("Some").delay(1, TimeUnit.SECOND);

但是请记住,delay() 将 Observable 的执行转移到另一个线程,因此如果您想在延迟后执行一些 UI 更改,您应该调用以下代码:

 Observable.just("Some").delay(1, TimeUnit.SECOND).observeOn(AndroidSchedulers.mainThread());

编辑

正如@PPartisan 所说,您还可以通过将其作为第三个参数传递给 delay 来指定调度程序:

Observable.just("Some").delay(1, TimeUnit.SECOND, AndroidSchedulers.mainThread());

关于android - 使用 .just() 运算符时如何添加延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46365030/

相关文章:

android - 如何使用 RxJava/RxAndroid 从 Android 服务更新 UI

java - 为 Rx v2 Flowable 编写同步单元测试

android - AppNotIdleException 由于 AnimatedVectorDrawableCompat

android - 将 Single's<User> 的 Flowable 转换为 List<User> 的 Flowable

android - 需要 RXJava 异步帮助。输入被调用阻塞

java - 同时查询多个ID,然后组合成一个Observable

java - 在 Edittext 上使用 setText 的 RxTextView.textChanges

java - 连接到服务器中的 ms sql 数据库

android - 无法在 Android Studio 中打开项目结构选项卡

android - 使用 Facebook SDK 手动记录应用安装事件