0
프로젝트에서 retrofit2를 사용합니다.내가 구현해야하는 장소 (활동/단편/싱글 톤)에서 개조 할 때 관찰 가능합니까?
public interface ProductService {
@POST("findProducts")
Observable<ProductsResponse> getProducts();
}
및 서비스 방법 : 내 조각에서이 서비스를 사용하여 그 후
public ProductService getProductService() {
return getService(ProductService.class);
}
나는 인터페이스를 가지고있다. ProductHandler implements Observer<ProductsResponse>
의 방법
onSubscribe
onNext
onError
onComplete
을 구현하기 위해
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);
}
}
이 올바른지를 : 나는 버튼을 클릭하면 나는이 메서드를 호출 :
@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());
}
}
을이 단편에서 핸들러를 실현?
나는 싱글이 이동하는 것이 좋습니다 해요 :
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
에서?