Retrofit2.x + rxjava2.x +mvp 大神例子分析

原项目地址:高仿知乎日报 Material Design + MVP + RxJava + Retrofit for android

项目目录结构:


目录结构.png

我们主要分析RxJava + Retrofit的部分。

在api目录下就是网络请求部分。entity目录下主要是一些数据模型类,这个大家应该都很熟悉了。

api

在*API.java文件中定义了相应的接口。

CommentsApi.png

在 Networks类中就是我们封装各个网络请求方法的重点。

public class Networks {

    private static final int DEFAULT_TIMEOUT = 5;

    private static Retrofit retrofit;

    private static CommonApi mCommonApi;

    private static CommentsApi mCommentsApi;

    private static ThemeApi mThemeApi;

    private static Networks mNetworks;

    public static Networks getInstance() {
        if (mNetworks == null) {
            mNetworks = new Networks();
        }
        return mNetworks;
    }

    public CommonApi getCommonApi() {
        return mCommonApi == null ? configRetrofit(CommonApi.class) : mCommonApi;
    }

    public CommentsApi getCommentsApi() {
        return mCommentsApi == null ? configRetrofit(CommentsApi.class) : mCommentsApi;
    }

    public ThemeApi getThemeApi() {
        return mThemeApi == null ? configRetrofit(ThemeApi.class) : mThemeApi;
    }

    private <T> T configRetrofit(Class<T> service) {
        retrofit = new Retrofit.Builder()
                .baseUrl(BuildConfig.API_BASE_URL)
                .client(configClient())
                .addConverterFactory(GsonConverterFactory.create())
                .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
                .build();
        return retrofit.create(service);
    }

    private OkHttpClient configClient() {
        OkHttpClient.Builder okHttpClient = new OkHttpClient.Builder()
                .connectTimeout(DEFAULT_TIMEOUT, TimeUnit.SECONDS);
        return okHttpClient.build();
    }

}

根据每个不同的接口定义不同的函数,返回相应的数据类型。

Android MVP架构设计
动脑学院的爱奇艺号

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,625评论 25 709
  • 那年我遇到他,我才18岁。他呢?我不说,我也不在乎,因为我爱他。 遇到他的时候正值盛夏,是我最喜欢...
    范大可阅读 2,435评论 0 0
  • 在iOS开发过程中,不可避免的要和证书打交道,真机调试、App上架、打包给测试去测试等都需要搞证书。在此过程中我们...
    江湖闹士阅读 13,519评论 2 4
  • 1 窗外的雨淅淅沥沥,温颖看了下墙上的挂钟,快八点了,公司的人早都走光了,若大的楼宇,只有她一人在加班。 也罢,再...
    碎米汤阅读 1,540评论 0 3