Panoramica su Reactive Programming e l'utilizzo di RxJava per lo sviluppo di applicazioni Android.
Talk tenuto in occasione della conferenza GDG Bari Devfest 2016 presso il Politecnico di Bari.
Lições Bíblicas - Adultos - CPAD - 3° Trimestre de 2016 - O Desafio da Evangelização - Obedecendo ao ide do Senhor Jesus de levar as Boas-novas a toda criatura.
A short power-point presentation about "The Great depression". This can get you a 100/100 if the teacher asks you to do a power-point about the great depression. The best power-point presentation you can find about the great depression. Now it's the time to show the class how smart you are and how hard you've worked!
The Cost of NonEurope in the Sharing Economy: Economic, Social and Legal Challenges and Opportunities
European Parliament Research Service
This 'Cost of Non-Europe' study examines the current economic, social and legal state of play
regarding the sharing economy in the European Union, and identifies the cost of the lack of
further European action in this field.
The assessment of existing EU and national legislation confirms that there are still significant
implementation gaps and areas of poor economic performance. The subsequent examination of
areas where it was believed that an economic potential exists highlighted that substantial
barriers remain, hindering the achievement of the goals set out in the existing legislation.
Moreover, some issues are not or are insufficiently addressed (e.g. status of workers employed
by sharing economy service providers). Consequently, more European action would be
necessary to achieve the full economic potential of the sharing economy. In doing so, policymakers
should seek to ensure an adequate balance between creative freedom for business and
the necessary regulatory protection.
This research estimates the potential economic gain linked with a better use of capacities
(otherwise under-used) as a result of the sharing economy is €572 billion in annual
consumption across the EU-28. This figure should nevertheless be considered with caution;
substantial barriers prevent the full benefits from being realised, and could reduce the value of
potential increased use to up to €18 billion in the shorter-term and up to €134 billion in the
medium and longer term, depending on the scale of regulatory obstacles.
Lições Bíblicas - Adultos - CPAD - 3° Trimestre de 2016 - O Desafio da Evangelização - Obedecendo ao ide do Senhor Jesus de levar as Boas-novas a toda criatura.
A short power-point presentation about "The Great depression". This can get you a 100/100 if the teacher asks you to do a power-point about the great depression. The best power-point presentation you can find about the great depression. Now it's the time to show the class how smart you are and how hard you've worked!
The Cost of NonEurope in the Sharing Economy: Economic, Social and Legal Challenges and Opportunities
European Parliament Research Service
This 'Cost of Non-Europe' study examines the current economic, social and legal state of play
regarding the sharing economy in the European Union, and identifies the cost of the lack of
further European action in this field.
The assessment of existing EU and national legislation confirms that there are still significant
implementation gaps and areas of poor economic performance. The subsequent examination of
areas where it was believed that an economic potential exists highlighted that substantial
barriers remain, hindering the achievement of the goals set out in the existing legislation.
Moreover, some issues are not or are insufficiently addressed (e.g. status of workers employed
by sharing economy service providers). Consequently, more European action would be
necessary to achieve the full economic potential of the sharing economy. In doing so, policymakers
should seek to ensure an adequate balance between creative freedom for business and
the necessary regulatory protection.
This research estimates the potential economic gain linked with a better use of capacities
(otherwise under-used) as a result of the sharing economy is €572 billion in annual
consumption across the EU-28. This figure should nevertheless be considered with caution;
substantial barriers prevent the full benefits from being realised, and could reduce the value of
potential increased use to up to €18 billion in the shorter-term and up to €134 billion in the
medium and longer term, depending on the scale of regulatory obstacles.
Subsídios das lições bíblicas da CPAD – JOVENS E ADULTOS - elaborados pelo Pr. Natalino das Neves (Pastor auxiliar na IEADC-Sede)
Acesse demais arquivos de slides e vídeos com comentários no blog:
http://goo.gl/PPDRnr
FAVOR SE INSCREVER NO MEU CANAL DO YOUTUBE. BASTA CLICAR NO LINK ABAIXO E SE INSCREVER:
https://www.youtube.com/channel/UCjxwfyjs_miA1vpqYbhNxwg?sub_confirmation=1
Aproveite para convidar seus amigos(as) e manos(as) para se inscreverem também.
Retroprogramming - Programmare oggi il C64, by Giovanni SimottiCodemotion
Come sviluppare oggi software per i vecchi computer e console a 8 bit. Panoramica del linguaggio assembler e del funzionamento della CPU. Differenze tra Z80 e 6502. L'importanza del timing video. Gli sprite. Dettaglio dell'hardware del C64 e tecniche di programmazione a esso relative.
SVILUPPO DI VIDEOGIOCHI SU PIATTAFORMA ANDROID: COSA C’E’ OLTRE IL 2D. COMPRE...Danilo Riso
La continua evoluzione tecnologica ed il perentorio impegno delle aziende produttrici di dispositivi mobili, sta dando vita ad una nuova generazione di hardware molto più potente e performante, aprendo cosi nuove frontiere per il mondo dell'entertainment mobile. La grafica tridimensionale di sicuro rappresenta un segmento importate di tanta evoluzione tecnologica al giorno d'oggi.Lo scopo dello Speech sarà quello di introdurre ed analizzare le metodiche, gli strumenti e le tecnologie necessarie per lo sviluppo di videogames tridimensionali. Ci immergeremo nel mondo degli Engine 3D studiandone le potenzialità e gli aspetti, analizzeremo le parti salienti del processo di creazione di un vero e proprio gioco tridimensionale.Se la grafica 3D rappresenta una importate tecnologia per i nostri giorni il futuro cosa ci riserverà? Augmented Reality. La nuova frontiera. Cambiano le prospettive. Da parte del giocatore, da parte dello sviluppatore.
Integrare effetti sonori e musiche con AndEngine. scelta degli effetti e melodie adatte al gameplay.
Come rendere il proprio gioco un fenomeno sociale. e’ piu’ divertente, e’ piu’ redditizio.
Presentazione architettura ed ambiente di sviluppo per dispositivi mobile dotati di SO Android. Verrà mostrata la struttura di un'applicazione creata con l'IDE Eclipse.
SVILUPPO DI VIDEOGIOCHI SU PIATTAFORMA ANDROID: TUTTA LA POTENZA SU DUE DIMEN...Danilo Riso
Into the game. Le basi concettuali. Cosa sono sprites e i tiles. In cosa consistono gli effetti di scrolling e di parallasse. Come si realizzano le animazioni dei fondali e degli sprites . Quali sono gli strumenti adatti per realizzare la grafica, gli effetti sonori? Usare Allegro Sprites Editor, Tiled Map Editor, GiMP, GrafX2. Quali tecnologie scegliere per scrivere un gioco? Panoramica fra gli engine 2D free ed a pagamento attualmente disponibili sul mercato. Introduzione ad uno di questi. AndEngine. Come rendere redditizio lo sviluppo di un gioco. Scelta del target, scelta delle logiche di distribuzione, sceglierlo come veicolo pubblicitario.Impostare e gestire la logica del gioco con AndEngine. Come creare il corretto loop per la gestione del flusso del gioco; Impostazione del GameLoop e corrispondenti azioni. Concetti di multithreading applicati al gamingGestire le animazioni con AndEngine. Come creare grafica ed animazioni e come integrarle ed utilizzarle. Gestire gli eventi e le collisioni sprite-sprite e sprite-background. Impariamo a gestire sprites e tiles. In cosa consistono gli effetti di scrolling, parallasse e come si ottengono. Come si realizzano le animazioni dei fondali e degli sprites.
Intervento al linux day 2013
I tools di programmazione per le device mobili sono quasi all'altezza di quelli per Linux; è giunta quindi l'ora di cimentarsi nella scrittura di script e programmi per telefoni: è facile, divertente ed i risultati sono interessanti.
In venti minuti vi mostrerò come si può scrivere un semplice programma per un telefono o tablet Android utilizzando Python e tools open source
Creare app senza programmare è davvero possibile? Se fino a qualche anno fa erano necessari programmatori e molti costi. ora creare un'app senza scrivere codice è davvero semplice e alla portata di tutti.
In questa presentazione vendiamo come fare.
Articolo originale per creare app senza programmare di geekly: http://www.geekly.it/creare-app-senza-programmare/
App di successo - quali strumenti? e le performance?Diego La Monica
in occasione di SMAU Napoli 2016 alla Mostra d'Oltremare ho tenuto un Workshop di 50 minuti affrontando aspetti legati alla progettazione, allo sviluppo e all'ottimizzazione di applicazioni mobili basate su Apache Cordova.
Subsídios das lições bíblicas da CPAD – JOVENS E ADULTOS - elaborados pelo Pr. Natalino das Neves (Pastor auxiliar na IEADC-Sede)
Acesse demais arquivos de slides e vídeos com comentários no blog:
http://goo.gl/PPDRnr
FAVOR SE INSCREVER NO MEU CANAL DO YOUTUBE. BASTA CLICAR NO LINK ABAIXO E SE INSCREVER:
https://www.youtube.com/channel/UCjxwfyjs_miA1vpqYbhNxwg?sub_confirmation=1
Aproveite para convidar seus amigos(as) e manos(as) para se inscreverem também.
Retroprogramming - Programmare oggi il C64, by Giovanni SimottiCodemotion
Come sviluppare oggi software per i vecchi computer e console a 8 bit. Panoramica del linguaggio assembler e del funzionamento della CPU. Differenze tra Z80 e 6502. L'importanza del timing video. Gli sprite. Dettaglio dell'hardware del C64 e tecniche di programmazione a esso relative.
SVILUPPO DI VIDEOGIOCHI SU PIATTAFORMA ANDROID: COSA C’E’ OLTRE IL 2D. COMPRE...Danilo Riso
La continua evoluzione tecnologica ed il perentorio impegno delle aziende produttrici di dispositivi mobili, sta dando vita ad una nuova generazione di hardware molto più potente e performante, aprendo cosi nuove frontiere per il mondo dell'entertainment mobile. La grafica tridimensionale di sicuro rappresenta un segmento importate di tanta evoluzione tecnologica al giorno d'oggi.Lo scopo dello Speech sarà quello di introdurre ed analizzare le metodiche, gli strumenti e le tecnologie necessarie per lo sviluppo di videogames tridimensionali. Ci immergeremo nel mondo degli Engine 3D studiandone le potenzialità e gli aspetti, analizzeremo le parti salienti del processo di creazione di un vero e proprio gioco tridimensionale.Se la grafica 3D rappresenta una importate tecnologia per i nostri giorni il futuro cosa ci riserverà? Augmented Reality. La nuova frontiera. Cambiano le prospettive. Da parte del giocatore, da parte dello sviluppatore.
Integrare effetti sonori e musiche con AndEngine. scelta degli effetti e melodie adatte al gameplay.
Come rendere il proprio gioco un fenomeno sociale. e’ piu’ divertente, e’ piu’ redditizio.
Presentazione architettura ed ambiente di sviluppo per dispositivi mobile dotati di SO Android. Verrà mostrata la struttura di un'applicazione creata con l'IDE Eclipse.
SVILUPPO DI VIDEOGIOCHI SU PIATTAFORMA ANDROID: TUTTA LA POTENZA SU DUE DIMEN...Danilo Riso
Into the game. Le basi concettuali. Cosa sono sprites e i tiles. In cosa consistono gli effetti di scrolling e di parallasse. Come si realizzano le animazioni dei fondali e degli sprites . Quali sono gli strumenti adatti per realizzare la grafica, gli effetti sonori? Usare Allegro Sprites Editor, Tiled Map Editor, GiMP, GrafX2. Quali tecnologie scegliere per scrivere un gioco? Panoramica fra gli engine 2D free ed a pagamento attualmente disponibili sul mercato. Introduzione ad uno di questi. AndEngine. Come rendere redditizio lo sviluppo di un gioco. Scelta del target, scelta delle logiche di distribuzione, sceglierlo come veicolo pubblicitario.Impostare e gestire la logica del gioco con AndEngine. Come creare il corretto loop per la gestione del flusso del gioco; Impostazione del GameLoop e corrispondenti azioni. Concetti di multithreading applicati al gamingGestire le animazioni con AndEngine. Come creare grafica ed animazioni e come integrarle ed utilizzarle. Gestire gli eventi e le collisioni sprite-sprite e sprite-background. Impariamo a gestire sprites e tiles. In cosa consistono gli effetti di scrolling, parallasse e come si ottengono. Come si realizzano le animazioni dei fondali e degli sprites.
Intervento al linux day 2013
I tools di programmazione per le device mobili sono quasi all'altezza di quelli per Linux; è giunta quindi l'ora di cimentarsi nella scrittura di script e programmi per telefoni: è facile, divertente ed i risultati sono interessanti.
In venti minuti vi mostrerò come si può scrivere un semplice programma per un telefono o tablet Android utilizzando Python e tools open source
Creare app senza programmare è davvero possibile? Se fino a qualche anno fa erano necessari programmatori e molti costi. ora creare un'app senza scrivere codice è davvero semplice e alla portata di tutti.
In questa presentazione vendiamo come fare.
Articolo originale per creare app senza programmare di geekly: http://www.geekly.it/creare-app-senza-programmare/
App di successo - quali strumenti? e le performance?Diego La Monica
in occasione di SMAU Napoli 2016 alla Mostra d'Oltremare ho tenuto un Workshop di 50 minuti affrontando aspetti legati alla progettazione, allo sviluppo e all'ottimizzazione di applicazioni mobili basate su Apache Cordova.
Non Conventional Android Programming (Italiano)Davide Cerbo
Android è il nuovo sistema operativo open source per dispositivi mobili e realizzato da Google che si è posta la missione di rendere l’internet mobile accessibile a tutti tramite dispositi a basso costo.
Durante questo intervento mostrerò come sia possibile sviluppare per questo sistema operativo (e non solo) senza l’utilizzo di Java e come sia possibile utilizzare una versione light di Spring Framework nelle applicazioni mobili.
Applicazioni mobili: dall'ideazione alla pubblicazioneDiego La Monica
Analisi del completo processo produttivo di un'applicazione per dispositivi mobili, dalla fase ideativa affrontando i singoli passaggi intermedi fino alla publicazione su Apple Store e Google Play, con un'accurata analisi sulle tecnologie necessarie e gli strumenti fondamentali.
Android App Development, Creare la nostra prima appNicola Corti
Intervento al Linux Day 2014@Pisa, organizzato da parte del GULP. L'intervento introduce allo sviluppo su piattaforma Android, mostrando i vari strumenti e gli accorgimenti da seguire per programmare sulla nota piattaforma del robottino verde.
Applicazioni mobili: strumenti, costi soluzioni e peformanceDiego La Monica
Le applicazioni mobili sono osservati speciali. Ma come decidere se sviluppare un'App Nativa o un'App Ibrida e quali sono i costi da sostenere? Questo ed altro è stato discusso a SMAU Milano 2016.
Presentarsi sul mercato globale con app di successoDiego La Monica
Perché decidere di sviluppare per uno specifico dispositivo mobile?
Perché utilizzare Apache Cordova?
Perché Ottimizzare e come?
Le domande hanno trovato risposta nel seminario tenuto a SMAU Milano 2015
I did a talk at DevFest Nord Italia 2016 about Progressive Web Apps, Hybrid and Native Apps, i've analyzed the pros and cons of the various technologies and described how to get started with Ionic, React Native and how work a Progressive Web App.
Multi-Device Hybrid Apps con Visual Studio e Apache CordovaAndrea Dottor
Sfrutta le tue abilità come sviluppatore web per creare app mobile per Windows Phone, iOS ed Android utilizzando una unica code-base (composta da codice HTML, CSS e JavaScript) e lavora direttamente in Visual Studio. Questo è ora possibile grazie all'estensione "Multi-Device Hybrid Apps for Visual Studio" ed all'uso di Apache Cordova. Un unico IDE ed un singolo progetto per sviluppare per le più diffuse piattaforme mobile.
In questa sessione scopriremo i vantaggi di questa combinazione e daremo risposta ad alcune domande: Quali vantaggi abbiamo dall'utilizzare Visual Studio? Perchè e quando sviluppare un'app ibrida? ...
Federico Massi.it - Intro alle app mobile CordovaFederico Massi
Introduzione generale alle app mobile Cordova (per Android, iOS, Windows, ecc).
(riduzione / adattamento della presentazione svolta presso GLM Macerata il 24 marzo 2017)
Similar to Sviluppare app event-driven con RxJava su Android (15)
5. Sviluppare App event-driven con RxJava su Android - Boris D’Amato
La Soluzione
RxJava RxJava è un’implementazione delle
Reactive Extensions per la Java VM
Una libreria per realizzare programmi asincroni
ed event-based utilizzando sequenze di
observable.
6. Sviluppare App event-driven con RxJava su Android - Boris D’Amato
Cosa significa “Reactive”?
Un sistema Reattivo deve essere
ovvero
alle richieste
degli utenti
a guasti
ed errori
Responsivo Resiliente Elastico Orientato a messaggi
al carico di
lavoro
a eventi e messaggi
reagire
7. Sviluppare App event-driven con RxJava su Android - Boris D’Amato
Reactive Programming
Erik Meijer Ben Christensen
Rx.Net RxJava
Dávid Karnok
RxJava
8. Sviluppare App event-driven con RxJava su Android - Boris D’Amato
Reactive Programming
“Paradigma di programmazione basato su flussi di dati e propagazione dei
cambiamenti” [Wikipedia]
Data flow Observer pattern Push vs Pull
9. Sviluppare App event-driven con RxJava su Android - Boris D’Amato
Gli Attori
Observable Observer Subscriber Subject
Generatore di
dati
Reagisce alla
ricezione dei dati
Ibrido tra
Observable e
Observer
10. Sviluppare App event-driven con RxJava su Android - Boris D’Amato
Comunicazione Observable - Observer
Observer
subscribe
Observable
onNext()
onComplete()
onError()
onSubscribe()
11. Sviluppare App event-driven con RxJava su Android - Boris D’Amato
Android Time!
RecyclerView
Lista dei contatti
12. Sviluppare App event-driven con RxJava su Android - Boris D’Amato
Creazione di un Observable
private Observable<String> getContacts() {
return Observable.create(new ObservableOnSubscribe<String>() {
@Override
public void subscribe(ObservableEmitter<String> e) throws Exception {
List<String> contacts = new ArrayList<>();
Cursor cursor = [...];
while (cursor.moveToNext()) {
String displayName = [...];
contacts.add(displayName);
}
cursor.close();
for (String contact : contacts) {
if (e.isDisposed()) return;
e.onNext(contact);
}
if (!e.isDisposed()) e.onComplete();
}});}
onError(Throwable e)
onNext(T item)
onComplete()
13. Sviluppare App event-driven con RxJava su Android - Boris D’Amato
Creazione di un Observable
List<Contact> contacts = [...];
Observable.fromArray(contacts).subscribe([...])
;
Observable.just()
.fromIterable()
.fromFuture()
.fromCallable()
.fromPublisher()
Observable.fromArray()
List<Contact> contacts = [...];
Observable.just(contacts.get(0), contacts.get(1))
.subscribe([...]);
14. Sviluppare App event-driven con RxJava su Android - Boris D’Amato
Creazione di un Observable
Observable.empty() Observable.never() Observable.throw()
15. Sviluppare App event-driven con RxJava su Android - Boris D’Amato
Observer<Contact> observer = new Observer<Contact>() {
@Override
public void onSubscribe(Disposable d) {
Log.d(TAG, "onSubscribe");
Log.d(TAG, "isDisposed: " + d.isDisposed());
}
@Override
public void onNext(Contact item) {
Log.d(TAG, "onNext");
adapter.addItem(item);
}
@Override
public void onError(Throwable e) {
Log.e(TAG, "onError: " + e.getMessage);
}
@Override
public void onComplete() {
Log.d(TAG, "onComplete");
}
};
Subscribe
List<Contact> contacts = [...];
Observable.fromArray(contacts)
.subscribe(observer);
16. Sviluppare App event-driven con RxJava su Android - Boris D’Amato
Filtering
Giorgio Carlo Andrea Gianni
Giorgio Gianni
getContacts().filter(new Predicate<Contact>() {
@Override
public boolean test(Contact contact) throws Exception {
return contact.getName().startsWith("G");
}
})
Filter
17. Sviluppare App event-driven con RxJava su Android - Boris D’Amato
Filtering (Lambda Version)
Giorgio Carlo Andrea Gianni
Giorgio Gianni
getContacts().filter(contact -> contact.getName().startsWith("G"))Filter
https://github.com/evant/gradle-retrolambda
18. Sviluppare App event-driven con RxJava su Android - Boris D’Amato
Filtering
Giorgio Carlo Andrea Gianni
Giorgio
getContacts().take(3)Take
Carlo Andrea
19. Sviluppare App event-driven con RxJava su Android - Boris D’Amato
Filtering
Giorgio Carlo Andrea Gianni
getContacts().takeLast(3)
Take
Last
Carlo Andrea Gianni
20. Sviluppare App event-driven con RxJava su Android - Boris D’Amato
Filtering
Giorgio Carlo Giorgio Gianni
getContacts().distinct()Distinct
Carlo GianniGiorgio
22. Sviluppare App event-driven con RxJava su Android - Boris D’Amato
Filtering
21
getTemperature().distinctUntilChanged()
21 20 19 20 21 22 23 23 21 22 21
Distinct
Until
Changed
21 20 19 20 21 22 23 21 22 21
23. Sviluppare App event-driven con RxJava su Android - Boris D’Amato
Filtering
21
getTemperature().sample(30, TimeUnit.SECONDS)
21 20 19 20 21 22 23 23 21 22 21
Sample
o
ThrottleLast
20 21
30 sec 30 sec
24. Sviluppare App event-driven con RxJava su Android - Boris D’Amato
Filtering
21
getTemperature().throttleFirst(30, TimeUnit.SECONDS)
21 20 19 20 21 22 23 23 21 22 21
Throttle
First
30 sec 30 sec
21 21 22
25. Sviluppare App event-driven con RxJava su Android - Boris D’Amato
Transforming
Giorgio Carlo Andrea Gianni
giorgio
getContacts().map((contact) -> {
contact.setName(
contact.getName().toLowerCase());
return contact;
})
Map
carlo andrea gianni
26. Sviluppare App event-driven con RxJava su Android - Boris D’Amato
Combining
Giorgio Carlo Andrea Gianni
Giorgio
Observable.merge(getContacts(), getImportingContacts())Merge
Carlo Andrea Gianni
Marco Francesco
Marco Francesco
27. Sviluppare App event-driven con RxJava su Android - Boris D’Amato
Combining
21° 22° 20° 18°
21° - 17:30
Zip
17:30 18:00 18:30 19:00
16°
22° - 18:00 20° - 18:30 18° - 19:00
Observable.zip(getTemperature(), getTime(), this::updateMonitor)
28. Sviluppare App event-driven con RxJava su Android - Boris D’Amato
Torniamo ad Android...
private Observable<Contact> getContacts() {
return Observable.create(new ObservableOnSubscribe<Contact>() {
@Override
public void subscribe(ObservableEmitter<String> e) throws Exception {
List<String> contacts = new ArrayList<>();
SharedPreferences prefs = getActivity().
getPreferences(Context.MOODE_PRIVATE);
Type contactType = new TypeToken<List<Contact>>(){}.getType();
String contactsGson = prefs.getString(“CONTACTS”, “”);
if (!contactsGson.isEmpty())
contacts = new Gson().fromJson(contactsGson, contactType);
for (Contact contact : contacts) {
e.onNext(contact);
}
if (!e.isDisposed()) e.onComplete();
}});}
29. Sviluppare App event-driven con RxJava su Android - Boris D’Amato
… e accade questo...
D/StrictMode: StrictMode policy violation;
~duration=253 ms:
android.os.StrictMode$ StrictModeDiskReadViol
ation: policy=31violation=2 at
android.os.StrictMode
$AndroidBlockGuardPolicy. onReadFromDisk (Stri
ctMode.java:1135)
30. Sviluppare App event-driven con RxJava su Android - Boris D’Amato
Soluzione
getContacts()
.subscribeOn( Schedulers.io() )
.subscribe([...]);
Schedulers.
computation()
io()
immediate()
newThread()
trampoline()
31. Sviluppare App event-driven con RxJava su Android - Boris D’Amato
… altro problema
android.view.ViewRoot$CalledFromWrongThreadException:
Only the original thread that created a view hierarchy can touch its views.
getContacts()
.subscribeOn(Schedulers.io())
.observeOn( AndroidSchedulers.mainThread() )
.subscribe([...]);
Soluzione
32. Sviluppare App event-driven con RxJava su Android - Boris D’Amato
Nella pratica
● La ricerca debba essere eseguita ogni
500 millisecondi
Vogliamo che:
● La ricerca debba partire solo dopo che
sia stati inseriti almeno 3 caratteri
33. Sviluppare App event-driven con RxJava su Android - Boris D’Amato
RxBinding
compile 'com.jakewharton.rxbinding:rxbinding:0.4.0'
compile 'com.jakewharton.rxbinding:rxbinding-support-v4:0.4.0'
compile 'com.jakewharton.rxbinding:rxbinding-design:0.4.0'
[ . . .]
https://github.com/JakeWharton/RxBinding
34. Sviluppare App event-driven con RxJava su Android - Boris D’Amato
Nella pratica
RxTextView
.textChanges(searchField)
.debounce(500, TimeUnit.MILLISECONDS)
.filter( (charSequence) -> return charSequence.length() >= 3 )
.subscribe( [...] )