如何在Android中使用RxJava的活动之间传递数据?

前端之家收集整理的这篇文章主要介绍了如何在Android中使用RxJava的活动之间传递数据?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我需要在两个活动MainActivity和ChildActivity之间传递一些数据.单击按钮MainActivity应打开ChildActivity并发送包含数据的事件.我有单身人士:
Subject<Object,Object> subject = new SerializedSubject<>(PublishSubject.create());

在MainActivity中我有以下按钮单击处理程序:

public void onClick(){
        startActivity(new Intent(MainActivity.this,ChildActivity.class));
        subject.onNext(new SomeEvent(data));
    }

和ChildActivity中的事件侦听器订阅

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        addEventListeners();
    }

    private void addEventListeners() {
        subject.ofType(SomeEvent.class)
                .observeOn(AndroidSchedulers.mainThread())
                .subscribeOn(Schedulers.io()).subscribe(
                event -> {
                    loadData(event.getData());
                });
    }

当我在启动活动后发送事件并在ChildActivity中调用addEventListeners时onCreate仍未订阅此事件且未调用loadData().

使用RxJava在活动之间传递数据的正确方法是什么(如果可能的话)?

解决方法

原因:

问题是您正在使用PublishSubject.根据PublishSubject的文档,在订阅时会发出源Observable的所有后续项.所以在你的情况下,它只会在订阅时发出事件.

修复你的问题

而不是使用PublishSubject使用BehaviorSubject,当观察者订阅它时,它会发出最近发出的项和源Observable的所有后续项.

浏览following link了解更多详情.

原文链接:https://www.f2er.com/android/310431.html

猜你在找的Android相关文章