如何等待在android上运行observable完成?
我有dataModule,它以某种方式提供了DataModel如何等待在android上运行observable完成?,android,rx-java,system.reactive,observable,Android,Rx Java,System.reactive,Observable,我有dataModule,它以某种方式提供了DataModel static Single<DataModel> loadData(); 此外,活动还有几个带有回调的UI按钮,这些按钮也需要数据 public void onViewCreated(View v..) { v.findViewById(R.id..).setOnClickListener(this::updateViewX) v.findViewById(R.id..).setOnClickListene
static Single<DataModel> loadData();
此外,活动还有几个带有回调的UI按钮,这些按钮也需要数据
public void onViewCreated(View v..) {
v.findViewById(R.id..).setOnClickListener(this::updateViewX)
v.findViewById(R.id..).setOnClickListener(this::updateViewX)
}
void updateViewX() {
DataModel.loadData().doOnSuccess(dataModel -> /** somehow updating ui **/)
.subscribe()
}
void updateViewY() {
DataModel.loadData().doOnSuccess(dataModel -> /** somehow updating ui **/)
.subscribe()
}
它可以工作,但在这个代码段中,每次单击按钮都会加载相同的数据。
我想要的是:
DataModel.loadData().subscribe({dataModel -> /** somehow updating ui **/});
您需要使用Observable
或Action
和subscribe()
方法进行订阅
您需要使用
Observable
或Action
和subscribe()
方法进行订阅。我认为在subscribe或doOnSuccess中处理事件没有太大区别。不幸的是,每次用户按下按钮时,它们都会导致loadData的执行。然后,您可以隐藏按钮,直到数据绑定。装订好后,展示给大家看。或禁用/启用它们。或者,如果您使用RxBinding
创建被动视图,则可以使用combileLatest()
。我想要的是挂起的行为:如果在数据加载完成之前按下按钮,则按钮的回调将延迟,并仅在成功加载数据后执行。谢谢,我将研究CombineRelatest我认为在subscribe或doOnSuccess中处理事件没有太大区别。不幸的是,每次用户按下按钮时,它们都会导致loadData的执行。然后,您可以隐藏按钮,直到数据绑定。装订好后,展示给大家看。或禁用/启用它们。或者,如果您使用RxBinding
创建被动视图,您可以使用combileLatest()
。我想要的是挂起的行为:如果在数据加载完成之前按下按钮,则按钮的回调将延迟,并仅在成功加载数据后执行谢谢,我将研究combineLatest
DataModel.loadData().subscribe({dataModel -> /** somehow updating ui **/});