【发布时间】:2017-01-29 21:55:54
【问题描述】:
我需要在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 在活动之间传递数据的正确方法是什么(如果可能的话)?
【问题讨论】:
-
也许你可以使用行为主题而不是发布主题,它保留最后几个事件并在新订阅时立即发出它们。
-
@SagarTrehan 是的,它解决了我的问题。您可以添加对此问题的答案而不是评论吗?
-
很高兴它可以帮助您解决问题。我已经发布了我的答案
-
Intents 有什么问题吗?
标签: android android-activity rx-java rx-android start-activity