清晰的MVP-封装 Retrofit2+Rxjava+Lamda+dagger2(可直接使用)

代码已上传到github传送门
欢迎大家fork哦,感谢,当然对你有用的话,嘻嘻
感谢大神提供的口 http://gank.io/api/
先上图:哈哈~福利了哦
妹子们

原谅我代码没贴全,gitub的注释很全滴!

先来Retrofit2+Rxjava+Lamda+dagger2的引入:

apply plugin: 'com.android.application'
apply plugin: 'com.jakewharton.butterknife'
apply plugin: 'me.tatarka.retrolambda'
apply plugin: 'com.neenbedankt.android-apt'
android {compileSdkVersion 24buildToolsVersion "25.0.0"defaultConfig {applicationId "com.gmz"minSdkVersion 21targetSdkVersion 24versionCode 1versionName "1.0"testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"}compileOptions {sourceCompatibility JavaVersion.VERSION_1_8targetCompatibility JavaVersion.VERSION_1_8}buildTypes {release {minifyEnabled falseproguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'}}
}dependencies {compile fileTree(include: ['*.jar'], dir: 'libs')androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {exclude group: 'com.android.support', module: 'support-annotations'})compile 'com.android.support:appcompat-v7:24.2.1'compile 'com.android.support:design:24.2.1'compile 'com.android.support:support-v4:26.0.0-alpha1'testCompile 'junit:junit:4.12'//rxjavacompile 'io.reactivex:rxjava:1.0.14'compile 'io.reactivex:rxandroid:1.0.1'//retrofit2compile 'com.squareup.retrofit2:retrofit:2.0.0-beta4'compile 'com.squareup.retrofit2:converter-gson:2.0.0-beta4'compile 'com.squareup.retrofit2:adapter-rxjava:2.0.0-beta4'//okhttp3compile 'com.squareup.okhttp3:okhttp:3.6.0'compile 'com.squareup.okio:okio:1.11.0'//glide4.0compile 'com.github.bumptech.glide:glide:4.0.0-RC0'annotationProcessor 'com.github.bumptech.glide:compiler:4.0.0-RC0'//gsoncompile 'com.google.code.gson:gson:2.8.1'//butterknifecompile 'com.jakewharton:butterknife:8.4.0'annotationProcessor 'com.jakewharton:butterknife-compiler:8.4.0'//recyclerviewcompile 'com.android.support:recyclerview-v7:26.0.0-alpha1'compile 'com.camnter.easyrecyclerview:easyrecyclerview:1.3'//λ表达式compile 'me.tatarka:gradle-retrolambda:3.4.0'// dagger 2 的配置compile 'com.google.dagger:dagger:2.4'apt 'com.google.dagger:dagger-compiler:2.4'//编译期生成代码的类库compile 'org.glassfish:javax.annotation:10.0-b28'// 添加java 注解库compile 'com.android.support:cardview-v7:26.0.0-alpha1'}

project.gradle


buildscript {repositories {jcenter()mavenCentral()}dependencies {classpath 'com.android.tools.build:gradle:2.3.3'//butterknifeclasspath 'com.jakewharton:butterknife-gradle-plugin:8.4.0'//浪打表达式classpath 'me.tatarka:gradle-retrolambda:3.4.0'// 添加android-apt 插件classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'}
}allprojects {repositories {jcenter()}
}task clean(type: Delete) {delete rootProject.buildDir
}

RetrofitHelper.class

package com.gmz;import android.util.Log;import com.gmz.model.net.cookie.PersistentCookieJar;
import com.gmz.model.net.cookie.cache.SetCookieCache;
import com.gmz.model.net.cookie.persistence.SharedPrefsCookiePersistor;
import com.gmz.model.net.intercept.CacheIntercept;
import com.gmz.utils.Constants;import java.io.File;
import java.util.concurrent.TimeUnit;import okhttp3.Cache;
import okhttp3.OkHttpClient;
import retrofit2.Retrofit;
import retrofit2.adapter.rxjava.RxJavaCallAdapterFactory;
import retrofit2.converter.gson.GsonConverterFactory;
import rx.Observable;
import rx.Subscriber;
import rx.android.schedulers.AndroidSchedulers;
import rx.schedulers.Schedulers;/*** 作者:haoran   on https://github.com/woaigmz 2017/6/13.* 邮箱:1549112908@qq.com* 说明:*/public class RetrofitHelper {public static RetrofitHelper retrofitHelper;public static Retrofit mRetrofit;private RetrofitHelper() {//进行retrofit的初始化initRetrofit();}/*** 初始化*/private void initRetrofit() {OkHttpClient.Builder builder = new OkHttpClient.Builder();
//        builder.addInterceptor(new LoggerInterceptor("DEBUG", true));//添加打印Logbuilder.connectTimeout(15, TimeUnit.SECONDS);//设置链接时长builder.readTimeout(20, TimeUnit.SECONDS);builder.writeTimeout(20, TimeUnit.SECONDS);builder.retryOnConnectionFailure(true);//设置失败重练builder.cache(setCache());//设置磁盘缓存//设置持久化cookiebuilder.cookieJar(new PersistentCookieJar(new SetCookieCache(), new SharedPrefsCookiePersistor(MyApplication.getContext())));builder.addInterceptor(new CacheIntercept());OkHttpClient okHttpClient = builder.build();mRetrofit = new Retrofit.Builder().baseUrl(Constants.MY_SERVICE_URL)//设置基本地址.addCallAdapterFactory(RxJavaCallAdapterFactory.create()).addConverterFactory(GsonConverterFactory.create()).client(okHttpClient).build();}public static RetrofitHelper getRetrofitHelper() {if (retrofitHelper == null) {synchronized (RetrofitHelper.class) {if (retrofitHelper == null) {retrofitHelper = new RetrofitHelper();}}}return retrofitHelper;}private Cache setCache() {//设置缓存File httpCacheDirectory = new File(MyApplication.getContext().getCacheDir(), "cache_oschina");Cache cache = null;try {cache = new Cache(httpCacheDirectory, 10 * 1024 * 1024);} catch (Exc


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部