如何等待在android上运行observable完成?

时间:2017-06-11 10:00:49

标签: android rx-java system.reactive observable

我有dataModule以某种方式提供DataModel

static Single<DataModel> loadData();

还有一个Activity需要启动时的数据

public void onCreate() {
   DataModel.loadData().doOnSuccess(this::bindData)
        .subscribe()
   ...

此外,该活动还有几个带回调的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()
}

它可以工作,但在此代码段中,每次按下按钮时都会加载相同的数据。 我想要的是:

  1. 在onCreate
  2. 中仅加载数据
  3. 等到它加载后再执行回调(如果按下按钮 - 回调应该等待数据)
  4. 请帮助我一些想法

1 个答案:

答案 0 :(得分:0)

DataModel.loadData().subscribe({dataModel -> /** somehow updating ui **/});

您需要使用ObservableAction使用subscribe()方法进行订阅。