Android retrofit封装(1)

来源:互联网 发布:阅读刷量软件 编辑:程序博客网 时间:2024/06/05 18:12

Android retrofit封装(1)

1经过请教大神之后,逐渐感觉到了retrofit几个核心的地方,又copy了一遍大神写的封装之后,决定转载一下,真心觉得跟大神交流就是爽。

2先看简单封装的代码

public class HttpManager {    //设缓存有效期为1天    private static long CACHE_STALE_SCE = 60 * 60 * 24 * 1;    //查询缓存的Cache-Control设置,为if-only-cache时只查询缓存而不会请求服务器,max-stale可以配合设置缓存失效时间    private static String CACHE_CONTROL_CACHE = "only-if-cached, max-statle=" + CACHE_STALE_SCE;    private static HttpManager httpManager;    private Retrofit retrofit;    public static HttpManager getInstance(String baseUrl){        if(httpManager == null){            httpManager = new HttpManager(baseUrl);        }        return  httpManager;    }    private HttpManager(String baseUrl){        File files = new File(Environment.getDownloadCacheDirectory().toString(),"cache");        int cacheSize = 10 * 1024 * 1024;        Cache cache = new Cache(files,cacheSize);//设置缓存路径跟时间        OkHttpClient.Builder builder = new OkHttpClient().newBuilder();        builder.readTimeout(10, TimeUnit.SECONDS);//读取超时        builder.connectTimeout(10,TimeUnit.SECONDS);//建立连接超时        builder.cache(cache);        OkHttpClient client = builder.build();        retrofit = new Retrofit.Builder().baseUrl(baseUrl)                .client(client)//用我们自己写好的OkHttpClient 替换掉原生的client(这里是重点,让我们可以自由的设置一些我们想设置的条件)                .addConverterFactory(GsonConverterFactory.create())                .addCallAdapterFactory(RxJavaCallAdapterFactory.create())                .build();    }    //通过这个方法获取 网络请求接口 的实例    public <T> T creat(Class<T> service){        return retrofit.create(service);    }}

3设置Application

public class MyApplication extends Application{    GetRequest_Interface getRequest_interface;//网络请求接口(这个就不多解释了吧)    private static MyApplication application;    @Override    public void onCreate() {        super.onCreate();        application = this;        getRequest_interface = HttpManager.getInstance("http://baseUrl").creat(GetRequest_Interface.class);    }    public static MyApplication getInstance(){        return application;    }    public GetRequest_Interface getGetRequest_interface() {        return getRequest_interface;    }}

4用法

Observable<PicNaviBean> observable = MyApplication.getInstance().getGetRequest_interface().getPicNavi("参数1", "参数2");

5封装完的好处
就是不用每次请求都new Retrofit一大堆代码了,直接链式结构创建被观察者

6还有一个拦截器目前没研究明白,以后研究明白在完善

原创粉丝点击