package com.fernandocejas.example.frodo; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.Toast; import com.fernandocejas.example.frodo.sample.MySubscriber; import com.fernandocejas.example.frodo.sample.MySubscriberBackpressure; import com.fernandocejas.example.frodo.sample.MySubscriberVoid; import com.fernandocejas.example.frodo.sample.ObservableSample; import java.util.List; import rx.Subscriber; import rx.android.schedulers.AndroidSchedulers; import rx.functions.Action1; import rx.schedulers.Schedulers; public class SamplesActivity extends Activity { private Button btnRxLogObservable; private Button btnRxLogSubscriber; private View.OnClickListener rxLogObservableListener = new View.OnClickListener() { @Override public void onClick(View v) { ObservableSample observableSample = new ObservableSample(); observableSample.stringItemWithDefer() .observeOn(AndroidSchedulers.mainThread()) .subscribe(); observableSample.numbers() .subscribeOn(Schedulers.newThread()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Action1<Integer>() { @Override public void call(Integer integer) { toastMessage("onNext() Integer--> " + String.valueOf(integer)); } }); observableSample.moreNumbers().toList().toBlocking().single(); observableSample.names() .subscribeOn(Schedulers.newThread()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Action1<String>() { @Override public void call(String string) { toastMessage("onNext() String--> " + string); } }); observableSample.error() .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Subscriber<String>() { @Override public void onCompleted() { //nothing here } @Override public void onError(Throwable e) { toastMessage("onError() --> " + e.getMessage()); } @Override public void onNext(String s) { //nothing here } }); observableSample.list() .subscribeOn(Schedulers.newThread()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Action1<List<ObservableSample.MyDummyClass>>() { @Override public void call(List<ObservableSample.MyDummyClass> myDummyClasses) { toastMessage("onNext() List--> " + myDummyClasses.toString()); } }); observableSample.doNothing() .subscribeOn(Schedulers.newThread()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(); observableSample.doSomething(v) .subscribeOn(Schedulers.newThread()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(); observableSample.sendNull() .subscribeOn(Schedulers.newThread()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(); } }; private View.OnClickListener rxLogSubscriberListener = new View.OnClickListener() { @Override public void onClick(View v) { final ObservableSample observableSample = new ObservableSample(); toastMessage("Subscribing to observables...Check logcat output..."); observableSample.strings() .subscribeOn(Schedulers.newThread()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new MySubscriber()); observableSample.stringsWithError() .subscribeOn(Schedulers.newThread()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new MySubscriber()); observableSample.numbersBackpressure() .onBackpressureDrop() .subscribeOn(Schedulers.newThread()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new MySubscriberBackpressure()); observableSample.doNothing() .subscribeOn(Schedulers.newThread()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new MySubscriberVoid()); observableSample.doSomething(v) .subscribeOn(Schedulers.newThread()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new MySubscriberVoid()); observableSample.sendNull() .subscribeOn(Schedulers.newThread()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new MySubscriber()); } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_samples); this.mapGUI(); } private void mapGUI() { this.btnRxLogObservable = (Button) findViewById(R.id.btnRxLogObservable); this.btnRxLogSubscriber = (Button) findViewById(R.id.btnRxLogSubscriber); this.btnRxLogObservable.setOnClickListener(rxLogObservableListener); this.btnRxLogSubscriber.setOnClickListener(rxLogSubscriberListener); } private void toastMessage(String message) { Toast.makeText(this, message, Toast.LENGTH_SHORT).show(); } }