0
嗨同行程序員,RxAndroid按鈕點擊觀察者?
我正在使用RxAndroid在按下按鈕時每隔3秒進行一次間隔API調用。
private final CompositeDisposable disposables = new CompositeDisposable();
Observable fetchWeatherInterval = Observable.interval(3, TimeUnit.SECONDS)
.map(new Function<Long, String>() {
@Override
public String apply(Long aLong) throws Exception {
return getWeather("http://samples.openweathermap.org/data/2.5/weather?", "London,uk", "b1b15e88fa797225412429c1c50c122a1");
}
})
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());
Observer displayWeatherInterval = new Observer<String>() {
@Override
public void onError(Throwable e) {
Log.e("Throwable ERROR", e.getMessage());
}
@Override
public void onComplete() {
}
@Override
public void onSubscribe(Disposable d) {
disposables.add(d);
}
@Override
public void onNext(String value) {
textViewWeatherInterval.append(value);
}
};
buttonFetchIntervalWeather.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
fetchWeatherInterval.subscribe(displayWeatherInterval);
}
});
我的問題是,如果有一種方法可以使按鈕(或者它的onclick監聽器)可觀察到過,並與其他IT連鎖。
類似buttonFetchIntervalWeather.subscribe(fetchWeatherInterval);
我會嘗試一下,回來給你。我想問一下使用這個lib是否會有問題,因爲我使用Rx 2.0,它沒有Subscription並且有CompositeDisposable,如果你能解釋爲什麼我需要flatMap(可能是throttleFirst()?),你的意思是說也許使用Observable.create()。謝謝你的回答,時間很親切。 –
編輯我的答案 – Sourabh
這個答案是完美的,寫得很好。它幫了很多,謝謝。 –