Android--Retrofit+RxJava

來源:互聯網
上載者:User

標籤:art   idg   void   ttext   entity   scheduler   view   tle   click   

1,現在響應式編程也是越來越多在項目中使用了,剛好上篇我們簡單了介紹了一下Retrofit,那麼我們來開始試著兩個一起用吧,不過不瞭解RxJava的同學可以先去看一看這個文章(挺好的):http://gank.io/post/560e15be2dca930e00da1083#toc_27

2,接著我們上一個項目的寫,怎麼添加RxJava到我們網路請求架構中呢,首先我們得修改Service的代碼為

public interface MovieService {    @GET("top250")    Observable<MovieEntity> getTopMovie(@Query("start") int start, @Query("count") int count);}

 然後我們Activity中的getMovie()方法修改為 

package com.qianmo.retrofitdemo;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.widget.Button;import android.widget.TextView;import android.widget.Toast;import com.qianmo.retrofitdemo.entry.MovieEntity;import com.qianmo.retrofitdemo.http.MovieService;import butterknife.Bind;import butterknife.ButterKnife;import butterknife.OnClick;import retrofit2.Call;import retrofit2.Callback;import retrofit2.Response;import retrofit2.Retrofit;import retrofit2.adapter.rxjava.RxJavaCallAdapterFactory;import retrofit2.converter.gson.GsonConverterFactory;import rx.Subscriber;import rx.android.schedulers.AndroidSchedulers;import rx.schedulers.Schedulers;public class MainActivity extends AppCompatActivity {    @Bind(R.id.tv_show)    TextView tvShow;    @Bind(R.id.btn_request)    Button btnRequest;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        ButterKnife.bind(this);    }    @OnClick({R.id.btn_request})    public void onClick(View view) {        switch (view.getId()) {            case R.id.btn_request:                getMovie();                break;        }    }    //請求網路資料    private void getMovie() {//        //https://api.douban.com/v2/movie/top250?start=0&count=10 目標地址//        String baseUrl = "https://api.douban.com/v2/movie/";////        //建立Retrofit對象//        Retrofit retrofit = new Retrofit.Builder()//                .baseUrl(baseUrl)//                .addConverterFactory(GsonConverterFactory.create())//                .build();////        MovieService movieService = retrofit.create(MovieService.class);//        Call<MovieEntity> call = movieService.getTopMovie(0, 10);//        call.enqueue(new Callback<MovieEntity>() {//            @Override//            public void onResponse(Call<MovieEntity> call, Response<MovieEntity> response) {//                tvShow.setText(response.body().getTitle());//            }////            @Override//            public void onFailure(Call<MovieEntity> call, Throwable t) {//                tvShow.setText(t.getMessage());//            }//        });        String baseUrl = "https://api.douban.com/v2/movie/";        Retrofit retrofit = new Retrofit.Builder()                .baseUrl(baseUrl)                .addConverterFactory(GsonConverterFactory.create())                .addCallAdapterFactory(RxJavaCallAdapterFactory.create())                .build();        MovieService movieService = retrofit.create(MovieService.class);        movieService.getTopMovie(0, 10)                .subscribeOn(Schedulers.io())                .observeOn(AndroidSchedulers.mainThread())                .subscribe(new Subscriber<MovieEntity>() {                    @Override                    public void onCompleted() {                        Toast.makeText(MainActivity.this, "Get Top Movie Completed", Toast.LENGTH_SHORT).show();                    }                    @Override                    public void onError(Throwable e) {                        tvShow.setText(e.getMessage());                    }                    @Override                    public void onNext(MovieEntity movieEntity) {                        tvShow.setText(movieEntity.getTitle());                    }                });    }}

這樣我們就簡單的把RxJava整合過來了  

Android--Retrofit+RxJava

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.