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

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

项目目录结构:


Retrofit2.x + rxjava2.x +mvp 大神例子分析_第1张图片
目录结构.png

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

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

Retrofit2.x + rxjava2.x +mvp 大神例子分析_第2张图片
api

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

Retrofit2.x + rxjava2.x +mvp 大神例子分析_第3张图片
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 configRetrofit(Class 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架构设计
动脑学院的爱奇艺号

你可能感兴趣的:(Retrofit2.x + rxjava2.x +mvp 大神例子分析)