Rxjava2+Retrofit2结合mvp的简单教程Rxjava篇(一):Rxjava的基本使用


开始讲之前,先推荐大牛的文章让大家去了解一下rxjava

  • 扔物线大神 http://gank.io/post/560e15be2dca930e00da1083 你去搜rxjava第一篇应该就是这个,是rxjava入门必看的文章了,现在大神已经辞职在家,专门开博客免费讲解android知识,希望大家去围观 http://hencoder.com/
  • http://www.jianshu.com/p/464fa025229e 这个是我在上看到写的不错的关于rxjava2的文章,简单易懂,本篇教程使用的也是rxjava2,毕竟要跟上时代潮流

好了,现在我们开始本篇文章

  • 1 第一步上网址:https://github.com/ReactiveX/RxJava,虽然rxjava1和2是分别维护的,但是未来rxjava1.x可能就不维护了,所以大家尽量使用rxjava2,毕竟学习成本是一样的。
  • 2 引用到项目
    compile 'com.squareup.retrofit2:adapter-rxjava2:2.3.0'//retrofit适配器,注意是adapter-rxjava2,如果使用的是rxjava,请使用adapter-rxjava
    compile 'io.reactivex.rxjava2:rxandroid:2.0.1'//rxandroid,注意是切换到主线程使用的
    compile 'io.reactivex.rxjava2:rxjava:2.1.2'
  • 3 retrofit创建时添加rxjava2适配器,代码如下
 Retrofit retrofit = new Retrofit.Builder()
                .baseUrl(BASE_URL)
                .addConverterFactory(GsonConverterFactory.create())//添加gson转换器
                .addCallAdapterFactory(RxJava2CallAdapterFactory.create())//添加rxjava2适配器
                .build();
  • 4 修改RetrofitService请求返回结果为Observable,代码如下
public interface RetrofitService {
    @FormUrlEncoded
    @POST("app/gift/gift_list/")
    Observable getGameList(@FieldMap Map map);
}
  • 5 在activity中调用,代码如下
public class RxjavaSimpleUseActivity extends AppCompatActivity {
    private TextView tvResult;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.retrofit);//布局和retrofit一样,使用textview显示结果
        tvResult = (TextView) findViewById(R.id.tv_result);
        //POST请求和上篇一样,创建请求体
        final Map map = new HashMap();
        map.put("page", "1");
        map.put("code", "news");
        map.put("pageSize", "20");
        map.put("parentid", "0");
        map.put("type", "1");
        HttpCenter.getInstance().service.getGameList(map)
                .subscribeOn(Schedulers.io())//指定网络请求在io线程
                .observeOn(AndroidSchedulers.mainThread())//指定返回结果处理在主线程,这样我们就可以在onnext中更新ui了
                .subscribe(new Observer() {
                    @Override
                    public void onSubscribe(@NonNull Disposable d) {

                    }

                    @Override
                    public void onNext(@NonNull ResponseBody responseBody) {
                        try {
                            tvResult.setText(responseBody.string());
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    }

                    @Override
                    public void onError(@NonNull Throwable e) {

                    }

                    @Override
                    public void onComplete() {

                    }
                });
    }
}

至此运行程序,你就能在屏幕上看到返回结果了,是的就是这么简单。下一篇我们会对rxjava进行封装,希望不熟悉rxjava的小伙伴,认真看一下大神的文章。
本篇代码已经上传:https://github.com/MrAllRight/HttpExample

你可能感兴趣的:(Rxjava2+Retrofit2结合mvp的简单教程Rxjava篇(一):Rxjava的基本使用)