RxJava+Retrofit+Okhttp的使用心得

前言

现在的软件开发世界里已经出现了很多好用高效的开发框架,作为程序员的我们要随时保持警惕,紧跟潮流,学会使用大牛们所开发出来的东西,目前市场上对应用RxJava+Retrofit+Okhttp(个人认为优点主要在业务处理与逻辑的简化,小伙伴可以细心琢磨哦)已经成为一种主流,不会的小伙伴可以一起探讨学习哦。


这个我推荐大家看看四篇文章

RxJava详解

Retrofit官方文档

Retrofit详解

Okhttp详解

那么接下来如何运用RxJava+Retrofit+Okhttp完成一次网络请求呢,之前我也看了很多文章,但是做为刚入门的我使用起来还是陌生,有些地方还是不太明白,这里不得不感谢一下我的同事,他这两天确实拓宽了我很多的眼界,让我对这个框架大致有了一个认识。

按照传统网络处理方式,我们一般或通过okhttp提交请求,对与请求后的数据处理,我想大多数人都是利用Handler机制,没错,Handler也是很不错的,但是考虑一种情况,当还在网络请求的时候,应用突然结束怎么办,那这样岂不是要造成内存泄漏。而RxJava就可以很好的处理这个问题,那他是怎么做的呢,就是RxJava其实有两种对象在里面,就是大家所说的被观察者和观察者,两者之间是通过订阅产生联系,这个时候只要我们在应用结束的时候取消订阅,那么这个问题就解决了。

好话不多说,那怎么才能利用这种框架完成网络请求以及更加简洁的刷新界面呢?

1.首先我们先做初始化



```

private static final int DEFAULT_TIME_OUT=5;//超时时间

    private static final int DEFAULT_READ_OUT=10;//读超时时间

    private RetrofitmRetrofit=null;

    private static RetrofitServiceManagermRetrofitServiceManager=null;

  //构造方法中去初始化Retrifit和Okhttp

  private RetrofitServiceManager(){

OkHttpClient.Builder builder=new OkHttpClient.Builder();

      HttpLoggingInterceptor httpLoggingInterceptor=new HttpLoggingInterceptor();

      httpLoggingInterceptor.setLevel(HttpLoggingInterceptor.Level.HEADERS);

      builder.addInterceptor(httpLoggingInterceptor);

      builder.connectTimeout(DEFAULT_TIME_OUT, java.util.concurrent.TimeUnit.SECONDS);

      builder.readTimeout(DEFAULT_READ_OUT, java.util.concurrent.TimeUnit.SECONDS);

      //添加公共参数拦截器

// HttpCommonInterceptor httpCommonInterceptor;

//初始化Retrofit对象

      mRetrofit=new Retrofit.Builder()

.client(builder.build())//Okhttp对象

              .addCallAdapterFactory(RxJava2CallAdapterFactory.create())

.addConverterFactory(GsonConverterFactory.create())

.baseUrl(Constant.Base_url)

.build();

  }

//获取实例

    public static RetrofitServiceManagergetInstance(){

if(mRetrofitServiceManager==null)

return new RetrofitServiceManager();

        return mRetrofitServiceManager;

    }

/**用于生成接口实例*/

    public T create(Class service){

return mRetrofit.create(service);

    }


```


说明

初始化Okhttp和Retrofit,Retrofit支持RxJava2响应式的请求操作。create方法用生成service层的接口实例。

你可能感兴趣的:(RxJava+Retrofit+Okhttp的使用心得)