【发布时间】:2016-04-17 11:37:55
【问题描述】:
如何进行一次又一次的改造 2 调用?
我正在阅读有关 RxJava 的信息,并且已经在使用 RxJava 进行调用,但我还没有找到一个很好的例子来说明如何使用 flatMaps。
有人可以向我解释一下怎么做吗?
我正在尝试进行这两个调用,在它们都完成后,我想开始一个新的活动。
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
Retrofit retrofit = new Retrofit.Builder()
.addCallAdapterFactory(RxJavaCallAdapterFactory.create())
.addConverterFactory(GsonConverterFactory.create())
.baseUrl("http://api.openweathermap.org/data/2.5/")
.build();
WeatherService weatherService = retrofit.create(WeatherService.class);
final Observable<Weather> london = weatherService.getCurrent();
london.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Subscriber<Weather>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(Weather weather) {
Log.i("WEATHER","Weather Name: " + weather.getName());
}
});
final Observable<Wind> windObservable = weatherService.getWind();
windObservable.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Subscriber<Wind>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(Wind wind) {
Log.i("WEATHER","Wind: " + wind.getSpeed().toString());
}
});
}
}
【问题讨论】:
-
您确定要在这种情况下链接它们吗?使用
Observable.combineLatest()同时运行这些可能更谨慎。如果下一次调用依赖于上一次的输出,你真的只想用地图链接 observables
标签: android web-services retrofit rx-java observable