0
私は自分のプロジェクトでretrofit2を使用しています。どのように私は実現しなければならない場所(活動/断片/シングルトン)改造から観察可能か?
public interface ProductService {
@POST("findProducts")
Observable<ProductsResponse> getProducts();
}
とサービス方法::私は私のフラグメントでこのサービスを使用する。その後
public ProductService getProductService() {
return getService(ProductService.class);
}
私はインターフェイスを持っています。
@Override
public void onClick(View view) {
if (view.getId() == R.id.button) {
RestApiFactory.getInstance().getProductService().getProducts()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new ProductHandler());
}
}
この断片でハンドラを実現::私はボタンにクリックすると、私は、このメソッドを呼び出す
private class ProductHandler implements Observer<ProductsResponse> {
@Override
public void onSubscribe(Disposable d) {
Log.d(TAG, "onSubscribe: start");
progressBar.setVisibility(View.VISIBLE);
}
@Override
public void onNext(ProductsResponse value) {
//save to DB in new Thread
}
@Override
public void onError(Throwable e) {
Log.d(TAG, "onError: "+ e.getMessage());
price.setVisibility(View.INVISIBLE);
progressBar.setVisibility(View.INVISIBLE);
}
@Override
public void onComplete() {
Log.d(TAG, "onComplete: finish");
price.setVisibility(View.INVISIBLE);
progressBar.setVisibility(View.INVISIBLE);
}
}
をProductHandler implements Observer<ProductsResponse>
のメソッドフラグメントで
onSubscribe
onNext
onError
onComplete
を実装することが正しいのですか?
私はシングルトンにこれを移動することをお勧めしています:
MySingleton.getInstanse().getData();
と移動し、すべてのgetData
へ:
public void getData(){
RestApiFactory.getInstance().getProductService().getProducts()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<ProductsResponse>() {
@Override
public void onSubscribe(Disposable d) {
//send broadcast and catch in Fragment
}
@Override
public void onNext(ProductsResponse productsResponse) {
//send broadcast and catch in Fragment
}
@Override
public void onError(Throwable e) {
//send broadcast and catch in Fragment
}
@Override
public void onComplete() {
//send broadcast and catch in Fragment
}
});
}
が、私は、これはナンセンスだと思います。誰があなたにどのように使用するかを教えてくれるでしょう(どこの場所で)Observable
retrofit
から?