rxjava with retrolambda
TRANSCRIPT
RetrolambdaAndroid N Java8
retrolambda library support lambda
jdk8
support java6/7
android support java8 gradle
retrolambda setting on android studio
apply plugin: 'me.tatarka.retrolambda'
buildscript { repositories { mavenCentral() } dependencies { classpath 'me.tatarka:gradle-retrolambda:3.2.4' } }
compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8}
lambda#1button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
System.out.println("click")
}
});
// lambda
button.setOnClickListener(view -> System.out.println("click"));
lambda#6
Object reference
view.setOnClickListener(v -> v.setVisibility(View.GONE));
view.setOnClickListener(this::viewGone);
private void viewGone(View v){ v.setVisibility(View.GONE); }
RxJava setting on android studio
RxAnroid
compile ‘io.reactivex:rxandroid:1.1.0'
RxLifecycle
compile 'com.trello:rxlifecycle:0.4.0'compile 'com.trello:rxlifecycle-components:0.4.0'
AsyncTask class MyTask extends AsyncTask<String, Integer, String> { @Override protected String doInBackground(String... params) { return null; } @Override protected void onPostExecute(String s) { super.onPostExecute(s); } }
RxJava
//Observable api.getPets() //Scheduler .subscribeOn(Schedulers.newThread()) .observeOn(AndroidSchedulers.mainThread()) //Observer .subscribe();
Observable
Observable.create(subscriber -> { subscriber.onNext(""); subscriber.onCompleted(); subscriber.onError(null); });
api.getPets() .compose(bindToLifecycle()) .map(petsResponse -> petsResponse.getResult().getResults()) .retry(this::networkRetry) .subscribeOn(Schedulers.newThread()) .observeOn(AndroidSchedulers.mainThread()) .finallyDo(dialog::dismiss) .subscribe(adapter::setPets, this::showErrorLog, this::onComplete);
private boolean networkRetry(int times, Throwable throwable) { RetrofitError retrofitError = (RetrofitError) throwable; return retrofitError.getKind() == RetrofitError.Kind.NETWORK || times < 3; }
sample code 1.https://github.com/bng86/RxJavaWithRetrolambdaSample
1.https://www.youtube.com/watch?v=k3D0cWyNno4 2.https://github.com/kaushikgopal/RxJava-Android-Samples 3.https://mcxiaoke.gitbooks.io/rxdocs/content/Intro.html