2016-03-04 7 views
-2

Я использую Retrofit для вызова Restful API. Я прочитал пост Rx Android, но я не понимаю, как интегрировать Rx Android с помощью Retrofit в новый определенный наблюдаемый шаблон. Я ссылаюсь на ссылку, исходящую от googling. Но не получить разъяснения, как достичь этого, поэтому я хочу, чтобы правильный пример или любой пост, чтобы учиться.Модернизация с использованием RxAndroid.

+1

быть более конкретными. Что именно вы хотите сделать? –

+0

хотите интегрировать api с Rx Android в наблюдаемом шаблоне. –

+0

есть много статей об этом, http://randomdotnext.com/retrofit-rxjava/ https://medium.com/@ahmedrizwan/rxandroid-and-retrofit-2-0-66dc52725fff#.3gbm0jt58 –

ответ

4

Если вы переключаетесь на RxAndroid, я предлагаю вам начать с: http://blog.danlew.net/2014/09/15/grokking-rxjava-part-1. В сообщении автор подробно объяснил, и в этой серии есть 4 должности.

Затем вы можете прочитать больше на Retrofit2: https://realm.io/news/droidcon-jake-wharton-simple-http-retrofit-2/; есть примеры с Call, Observable и Future.

От простого привета мира использования Observable, чтобы получить выход желания из onNext (похожий на обратный вызов):

Observable<String> myObservable = Observable.create(
    new Observable.OnSubscribe<String>() { 
     @Override 
     public void call(Subscriber<? super String> sub) { 
      sub.onNext("Hello, world!"); 
      sub.onCompleted(); 
     } 
    } 
); 

Subscriber<String> mySubscriber = new Subscriber<String>() { 
    @Override 
    public void onNext(String s) { System.out.println(s); } 

    @Override 
    public void onCompleted() { } 

    @Override 
    public void onError(Throwable e) { } 
}; 

myObservable.subscribe(mySubscriber); 
// Outputs "Hello, world!" 

Теперь мы можем реализовать Retrofit2 что-то вроде этого:

interface GitHubService { 
    @GET("/repos/{owner}/{repo}/contributors") 
    Observable<List<Contributor>> repoContributors(
     @Path("owner") String owner, 
     @Path("repo") String repo); 
} 

Subscriber<List<Contributor>> repoSubscriber = new Subscriber<List<Contributor>>() { 
    @Override 
    public void onNext(List<Contributor> list) { 

     // do something with the list 
    } 


    @Override 
    public void onCompleted() { } 

    @Override 
    public void onError(Throwable e) { } 
}; 

gitHubService.repoContributors("square", "retrofit") 
    .subscribe(repoSubscriber); 

Вы можете использовать Action1, а также подписчика.

gitHubService.repoContributors("square", "retrofit") 
    .subscribe(new Action1<List<Contributor>>() { 
     @Override public void call(List<Contributor> contributors) { 
     // ... 
     } 
    }); 
+0

Пока эта ссылка может ответить на вопрос, лучше включить здесь основные части ответа и предоставить ссылку для справки. Ответные ссылки могут стать недействительными, если связанная страница изменится. - [Из обзора] (/ review/low-quality-posts/11509555) –

+1

Я отредактировал свой ответ. Спасибо. – ninjahoahong

Смежные вопросы