您的位置:首页 > 编程语言 > Java开发

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 + ")"));
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: