SubscribeOn = ワーカースレッド
ObserveOn = UI スレッド
こちらのコード例が見事です。ご覧ください!
[Android] OkHTTP + Retrofit + RxAndroid で REST クライアントを実装する
http://dev.classmethod.jp/smartphone/android/okhttp-retrofit-rxandroid/
東京の天気を取得して、画面に表示するようです。
「東京の天気を取得」がワーカースレッド。
「画面に表示」を UI スレッドで実行するようになっています。
// 非同期処理の実行 adapter.create(WeatherApi.class).get("weather", "Tokyo,jp") .subscribeOn(Schedulers.newThread()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Observer<WeatherEntity>() { @Override public void onCompleted() { Log.d("MainActivity", "onCompleted()"); } @Override public void onError(Throwable e) { Log.e("MainActivity", "Error : " + e.toString()); } @Override public void onNext(WeatherEntity weather) { Log.d("MainActivity", "onNext()"); if (weather != null) { ((TextView) findViewById(R.id.text)).setText(weather.weather.get(0).main); } } });
SubscribeOn は、最初の ObservableOn より前の処理に適用されます。
ObserveOn は、それより後の処理に適用されます。2 個目以降の ObserveOn も同様です。
図にするとこのようなイメージです:
0 件のコメント:
コメントを投稿