闲话不多说,直接上菜。。。
project的结构
整个project的结构由data module和app module组成:
- data module:数据模块,封装了网络请求及数据处理
api包:网络接口api
bean包:数据实体
di包:Dagger2相关类
repository包:网络请求的仓库 - app module:主模块
base包:基类
di包:Dagger2相关类
ui包:ui模块的类
util包:工具类
需要添加的依赖
- data module
/*dagger2*/
compile 'com.google.dagger:dagger:2.4'
apt 'com.google.dagger:dagger-compiler:2.4'
//java注解
compile 'org.glassfish:javax.annotation:10.0-b28'
/*rxjava*/
compile 'io.reactivex:rxjava:1.1.0'
compile 'io.reactivex:rxandroid:1.1.0'
/*retrofit*/
compile "com.squareup.retrofit2:retrofit:2.0.2"
compile "com.squareup.retrofit2:converter-gson:2.0.2"
compile "com.squareup.retrofit2:adapter-rxjava:2.0.2"
/*Okhttp*/
compile 'com.squareup.okhttp3:okhttp:3.2.0'
compile 'com.squareup.okhttp3:logging-interceptor:3.2.0'
/*okhttp拦截器*/
compile "com.facebook.stetho:stetho:1.3.1"
compile "com.facebook.stetho:stetho-okhttp3:1.3.1"
- app module
/*butterknife*/
compile "com.jakewharton:butterknife:8.8.1"
apt "com.jakewharton:butterknife-compiler:8.8.1"
/*dagger2*/
compile 'com.google.dagger:dagger:2.4'
apt 'com.google.dagger:dagger-compiler:2.4'
//java注解
compile 'org.glassfish:javax.annotation:10.0-b28'
data module
- ApiService
public interface ApiService {
@GET("news/latest")
Observable<MainResultBean> requestMainData();
}
- Repository
public class Repository {
private ApiService mApiService;
public Repository(ApiService apiService) {
mApiService = apiService;
}
public Observable<MainResultBean> requestMainData() {
return mApiService.requestMainData();
}
}
- DataModule
@Module
public class DataModule {
/**host*/
private static final String BASE_UEL = "http://news-at.zhihu.com/api/4/";
/**
* 提供单例网络请求仓库
* @param apiService
* @return
*/
@Singleton
@Provides
public Repository provideRepository(ApiService apiService) {
return new Repository(