Retrofit+RxJava+lambda使用示例
2015-12-14 15:34
393 查看
Retrofit+RxJava+lambda使用示例
废话不说先上Gradle
// Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:1.3.0' classpath 'me.tatarka:gradle-retrolambda:2.4.+' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } } allprojects { repositories { jcenter() } }
repositories { mavenCentral() maven { url "http://repo.maven.apache.org/maven2" } } apply plugin: 'com.android.application' apply plugin: 'retrolambda' android { compileSdkVersion 23 buildToolsVersion "23.0.2" compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } retrolambda { System.getenv("JAVA8_HOME") System.getenv("JAVA7_HOME") javaVersion JavaVersion.VERSION_1_7 } defaultConfig { applicationId "com.as.testkaixin" minSdkVersion 15 targetSdkVersion 23 versionCode 1 versionName "1.0" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { compile fileTree(include: ['*.jar'], dir: 'libs') compile 'com.squareup.picasso:picasso:2.5.2' compile 'com.squareup.retrofit:retrofit:2.0.0-beta2' compile 'com.squareup.retrofit:converter-gson:2.0.0-beta2' compile 'com.squareup.retrofit:adapter-rxjava:2.0.0-beta2' compile 'io.reactivex:rxjava:1.1.0' compile 'io.reactivex:rxandroid:1.1.0' compile 'com.jakewharton:butterknife:7.0.1' }
2 导入包后首先是Retrofit同步模式访问网络
public static final String API_URL = "https://api.github.com"; public static class Contributor { public final String login; public final int contributions; public Contributor(int contributions, String login) { this.contributions = contributions; this.login = login; } } public interface GitHub{ @GET("/repos/{owner}/{repo}/contributors") Call<List<Contributor>> contributors (@Path("owner") String owner, @Path("repo") String repo); } public static void main(String... args) throws IOException { Retrofit retrofit = new Retrofit.Builder() .baseUrl(API_URL) .addConverterFactory(GsonConverterFactory.create()).build(); GitHub gitHub = retrofit.create(GitHub.class); Call<List<Contributor>> call = gitHub.contributors("square", "retrofit"); List<Contributor> contributors = call.execute().body(); for (Contributor contributor : contributors) { System.out.println(contributor.login + " (" + contributor.contributions + ")"); } }
3 其次是Retrofit异步模式访问网络
public static final String API_URL = "https://api.github.com"; public static class Contributor { public final String login; public final int < cafb /strong>[b]contributions; public Contributor(int contributions, String login) { this.contributions = contributions; this.login = login; } } public interface GitHub{ @GET("/repos/{owner}/{repo}/contributors") Call<List<Contributor>> contributors (@Path("owner") String owner, @Path("repo") String repo); } public static void main(String... args) throws IOException { Retrofit retrofit = new Retrofit.Builder() .baseUrl(API_URL) .addConverterFactory(GsonConverterFactory.create()).build(); GitHub gitHub = retrofit.create(GitHub.class); Call<List<Contributor>> call = gitHub.contributors("square", "retrofit"); call.enqueue(new Callback<List<Contributor>>() { @Override public void onResponse(Response<List<Contributor>> response, Retrofit retrofit) { List<Contributor> contributors =response.body(); for (Contributor contributor : contributors) { System.out.println(contributor.login + " (" + contributor.contributions + ")"); } } @Override public void onFailure(Throwable t) { System.out.println("erro"); } }); }
4 最后是
Retrofit+RxJava+lambda
public static final String API_URL = "https://api.github.com"; public static class Contributor { public final String login; public final int contributions; public Contributor(int contributions, String login) { this.contributions = contributions; this.login = login; } } public interface GitHub{ @GET("/repos/{owner}/{repo}/contributors") Observable<List<Contributor>> contributors (@Path("owner") String owner, @Path("repo") String repo); } public static void main(String... args) throws IOException { Retrofit retrofit = new Retrofit.Builder() .baseUrl(API_URL) .addConverterFactory(GsonConverterFactory.create()) .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) .build(); GitHub gitHub = retrofit.create(GitHub.class); Observable<List<Contributor>> observable = gitHub.contributors("square", "retrofit"); observable.subscribe(new Action1<List<Contributor>>() { @Override public void call(List<Contributor> contributors) { for (Contributor contributor : contributors) { System.out.println(contributor.login + " (" + contributor.contributions + ")"); } } }); System.out.println("================4lambda======================================"); observable.subscribe(contributors -> { for (Contributor contributor : contributors) { System.out.println(contributor.login + " (" + contributor.contributions + ")"); } }); System.out.println("================4lambda from======================================"); observable.subscribe(contributors -> { Observable.from(contributors) .subscribe(contributor -> System.out.println(contributor.login + " (" + contributor.contributions + ")")); }); System.out.println("================4lambda flat Map======================================"); observable.flatMap(contributors -> Observable.from(contributors)) .subscribe(contributor -> System.out.println(contributor.login + " (" + contributor.contributions + ")")); System.out.println("================4lambda filter======================================"); observable.flatMap(contributors -> Observable.from(contributors)) .filter(contributor -> contributor != null) .subscribe(contributor -> System.out.println(contributor.login + " (" + contributor.contributions + ")")); System.out.println("================4lambda get======================================"); observable.flatMap(contributors -> Observable.from(contributors)) .take(5) .subscribe(contributor -> System.out.println(contributor.login + " (" + contributor.contributions + ")")); System.out.println("================4lambda doOnNext======================================"); observable.flatMap(contributors -> Observable.from(contributors)) .doOnNext(contributor -> System.out.println("do someThing...."+contributor.getClass().toString()) ) .subscribe(contributor ->System.out.println(contributor.login + " (" + contributor.contributions + ")")); }
相关文章推荐
- (转)java序列化时候序列ID作用(结合实际场景)
- SpringMVC
- Struts2基础复习系列(5)
- JAVA学习笔记3--数组
- 【JavaWeb】 JavaBean使用方法
- Ugly Number II leetcode java
- java三种方法拆分字符串
- 使用 Spring 进行单元测试
- JAVA-装饰器模式
- MyEclipse js文件报错解决方法
- Rxjava要素(一)
- java直接内存与堆内存的比较
- java 泛型
- 基于Java的JDBC对数据库的CRUD
- Spring task
- javasctrpt简单应用
- Java字节序转换
- spring+mybatis管理多个数据源(非分布式事务)
- Java中如何遍历Map对象
- Java中如何遍历Map对象