Essa palestra fala sobre o uso de RxJava e RxAndroid am projetos de Android nativo. Explicando suas vantagens e, relações as APIs nativas do mundo Android.
Dagger 2 Injeção de dependências no mundo AndroidClerton Leal
Uma palestra sobre o histórico do uso de injeção de dependências no mundo android, passando pelo Guice, Dagger e Dagger 2. Link para o código de exemplo no ultimo slide.
O documento discute injeção de dependências em Go. Explica que a injeção de dependências permite baixo acoplamento entre classes ao mover a criação de objetos de dependência para fora da classe. Também discute containers de injeção de dependências como Wire, que ligam abstrações a implementações concretas e injetam dependências nos construtores. O Wire usa um gerador de código para definir providers e construir um injector sem usar reflection.
Treze ferramentas/frameworks para desenvolvimento androidRicardo Longa
O documento lista 13 ferramentas/frameworks para desenvolvimento Android, descrevendo brevemente cada um. As ferramentas incluem bibliotecas para requisições HTTP assíncronas, cache e carregamento de imagens, comunicação com banco de dados SQLite, animações de progresso, atualização de interface com usuário e mais. Muitas são open source e facilitam tarefas comuns no desenvolvimento mobile.
O documento discute o uso de serviços em dispositivos móveis no Android. Serviços permitem executar tarefas em segundo plano sem interface gráfica. Existem duas formas de iniciar um serviço: startService() inicia o serviço independentemente do processo que o criou, enquanto bindService() conecta-se a um serviço existente. O documento fornece um exemplo completo de como criar e usar um serviço vinculado para recuperar o valor de um contador.
This document provides a tutorial on graphical programming in Java using Swing. It covers creating basic Swing elements like frames and buttons, using layout managers, handling events, and building a simple window application.
Android - Programação para dispositivos móveis (Aula 2)Ricardo Longa
A aula aborda conceitos de intents no Android, incluindo iniciar novas activities e serviços, simular chamadas telefônicas e recebimento de SMS. O documento também discute brevemente a história dos dispositivos móveis e do navegador WebKit.
O documento descreve a evolução da framework Demoselle ao longo dos anos, desde a versão 0.1 até a versão atual. Apresenta os principais módulos e funcionalidades como JSF, JPA, injeção de dependência e produção de recursos. Demonstra exemplos de uso de componentes como envio de email. Explica como a Demoselle implementa padrões como CDI para facilitar o desenvolvimento Java EE.
Dagger 2 Injeção de dependências no mundo AndroidClerton Leal
Uma palestra sobre o histórico do uso de injeção de dependências no mundo android, passando pelo Guice, Dagger e Dagger 2. Link para o código de exemplo no ultimo slide.
O documento discute injeção de dependências em Go. Explica que a injeção de dependências permite baixo acoplamento entre classes ao mover a criação de objetos de dependência para fora da classe. Também discute containers de injeção de dependências como Wire, que ligam abstrações a implementações concretas e injetam dependências nos construtores. O Wire usa um gerador de código para definir providers e construir um injector sem usar reflection.
Treze ferramentas/frameworks para desenvolvimento androidRicardo Longa
O documento lista 13 ferramentas/frameworks para desenvolvimento Android, descrevendo brevemente cada um. As ferramentas incluem bibliotecas para requisições HTTP assíncronas, cache e carregamento de imagens, comunicação com banco de dados SQLite, animações de progresso, atualização de interface com usuário e mais. Muitas são open source e facilitam tarefas comuns no desenvolvimento mobile.
O documento discute o uso de serviços em dispositivos móveis no Android. Serviços permitem executar tarefas em segundo plano sem interface gráfica. Existem duas formas de iniciar um serviço: startService() inicia o serviço independentemente do processo que o criou, enquanto bindService() conecta-se a um serviço existente. O documento fornece um exemplo completo de como criar e usar um serviço vinculado para recuperar o valor de um contador.
This document provides a tutorial on graphical programming in Java using Swing. It covers creating basic Swing elements like frames and buttons, using layout managers, handling events, and building a simple window application.
Android - Programação para dispositivos móveis (Aula 2)Ricardo Longa
A aula aborda conceitos de intents no Android, incluindo iniciar novas activities e serviços, simular chamadas telefônicas e recebimento de SMS. O documento também discute brevemente a história dos dispositivos móveis e do navegador WebKit.
O documento descreve a evolução da framework Demoselle ao longo dos anos, desde a versão 0.1 até a versão atual. Apresenta os principais módulos e funcionalidades como JSF, JPA, injeção de dependência e produção de recursos. Demonstra exemplos de uso de componentes como envio de email. Explica como a Demoselle implementa padrões como CDI para facilitar o desenvolvimento Java EE.
Programação functional reativa: lidando com código assíncronoLeonardo Borges
O documento apresenta os conceitos de programação funcional reativa (FRP) através de exemplos de código assíncrono e eventos. A FRP trata valores que mudam ao longo do tempo como valores regulares e utiliza dois conceitos principais: comportamentos e eventos. O framework RxJS é usado para demonstrar como lidar com streams de eventos de forma declarativa ao invés de imperativa.
This document discusses developing Android apps with Kotlin. It begins by noting some limitations of Java for Android development and how Kotlin addresses these issues through features like null safety, data classes, extensions, and interoperability with Java. It then provides code examples demonstrating Kotlin's syntax for various language constructs and how they can simplify Android development tasks. Finally, it recommends additional Kotlin resources and libraries that can enhance the Android development experience.
O documento introduz o Git, seu histórico de criação por Linus Torvalds para o desenvolvimento do Linux, e seus principais comandos e funcionalidades como branches, tags e resolução de conflitos.
Um algoritmo genético para o problema de roteamento de veículosPaulo Remoli
Um algoritmo genético é proposto para resolver o problema de roteamento de veículos, que busca minimizar a distância total percorrida pelos veículos respeitando suas capacidades. O algoritmo implementa operadores genéticos como cruzamento e mutação para gerar novas soluções e seleciona as melhores após avaliação. Resultados computacionais são apresentados usando uma instância com 43 clientes.
Annotation processing allows generating new Java files at build time from annotations without using reflection. It was introduced in Java 5 and lets you write processors to handle annotations. For Android, the android-apt Gradle plugin is needed to support annotation processing. A processor class extends AbstractProcessor and contains processing logic in the process() method to handle annotations and generate files. Examples generate getters automatically from fields or convert POJOs to strings.
This document provides an introduction to getting started with Kotlin and Android development. It discusses configuring the IDE and creating a Kotlin project. It then covers creating the first Kotlin class, introducing Kotlin extensions, functions, and lambdas. Finally, it demonstrates applying these Kotlin concepts by building an app with activities, entities, and an adapter to display a list of users.
From Hackathons to Startups: Building Products from Fresh IdeasChris Traganos
Closing keynote delivered at HackZurich on October 12, 2014 in Zurich Switzerland.
Lasting products have a solid team building together towards a shared goal. Hackathons and meetups are a great way to find team members who will compliment and push you to become better developers, designers, and product managers.
Hear examples from Silicon Valley projects that started as side projects and became life changing projects and why being a hacker for life will keep you fresh and valuable.
Kotlin is a JVM language developed by Jetbrains. Its version 1.0 (production ready) was released at the beginning of the year and made some buzz within the android community. This session proposes to discover this language, which takes up some aspects of groovy or scala, and that is very close to swift in syntax and concepts. We will see how Kotlin boosts the productivity of Java & Android application development and how well it accompanies reactive development.
Kotlin for Android - Vali Iorgu - mRreadyMobileAcademy
Kotlin is a programming language that runs on the Java Virtual Machine and is fully interoperable with Java. It aims to combine object-oriented and functional programming features and to improve developer productivity. Some key features of Kotlin include null safety, extension functions, inline functions and lambdas, and support for coroutines. It provides painless Java interoperability so existing Java code and libraries can be used from Kotlin.
The document introduces RxJava, a library for composing asynchronous and event-based programs using observable sequences for the Java Virtual Machine. It discusses the problems with asynchronous programming, provides an overview of reactive programming and reactive extensions, and describes RxJava's core types like Observable and Observer. It also covers key concepts like operators, schedulers, subjects, and dealing with backpressure in RxJava.
Reactive Programming on Android - RxAndroid - RxJavaAli Muzaffar
Introduction to RxJava for reactive programming and how to use RxAndroid to do reactive programming on Android.
There is a sample android app to go with the slides that has all the source shown in the project.
This document outlines the agenda for Season 2 Episode 2 of an event. The episode will include:
1. Lightning talks on various Reactive and Rx topics from different speakers
2. Guest speakers Jake Wharton from Square, Matt Ingenthron from Couchbase, and Will Sargent from Typesafe
3. More details on RxJava and composable reactive functions
This presentation is intended for giving an introduction to Genetic Algorithm. Using an example, it explains the different concepts used in Genetic Algorithm. If you are new to GA or want to refresh concepts , then it is a good resource for you.
New version of my Lean Startup for Agile Producy Management talk - first delivered at ACE! Krakow 2015. Hand-drawn slides by yours trully :) - a video of this talk is available at https://vimeo.com/122542926
Scala Data Pipelines for Music RecommendationsChris Johnson
Are you still building data pipelines with Java and Python? Are you curious about the current buzz in the Big Data community surrounding Scala as a data processing environment? In this talk I'll discuss how Spotify migrated its music recommendations pipeline from Python to Scala. I'll dive into the language specific features that make Scala the ideal candidate for big data processing as well as highlight the rich set of tools and APIs that we take advantage of to process music recommendations for our 50 Million active users including Scalding, Breeze, Kafka, Spark, Parquet, Driven and Zeppelin.
The Top Skills That Can Get You Hired in 2017LinkedIn
We analyzed all the recruiting activity on LinkedIn this year and identified the Top Skills employers seek. Starting Oct 24, learn these skills and much more for free during the Week of Learning.
#AlwaysBeLearning https://learning.linkedin.com/week-of-learning
Este documento fornece um resumo de 3 frases sobre tecnologias para desenvolvimento de software:
1) Apresenta um curso sobre diversas tecnologias Java como Servlets, JSP, JSF, EJB e Spring. 2) Fornece detalhes sobre o instrutor Rafael Benevides e sua experiência com Java. 3) A agenda inclui discussões sobre Servlets, JSP, Hibernate e outros temas ao longo de 9 dias.
[TDC2016] Apache SparkMLlib: Machine Learning na PráticaEiti Kimura
Presented with Flavio Clésio at TDCSP2016 showing a Machine Learning solution for tracking and monitoring a critical billing platform.
Code repository:
https://github.com/eiti-kimura-movile/spark-mllib-sample
TDC2016SP - SparkMLlib Machine Learning na Práticatdc-globalcode
O documento apresenta um caso de uso de machine learning na Movile para monitoramento de sua plataforma de tarifação. Foi desenvolvido o Watcher-AI, que usa regressão linear com Spark MLlib para prever métricas e detectar possíveis problemas com base nos dados históricos. O modelo treinado é implementado em Java para notificar a equipe quando há discrepâncias.
Programação functional reativa: lidando com código assíncronoLeonardo Borges
O documento apresenta os conceitos de programação funcional reativa (FRP) através de exemplos de código assíncrono e eventos. A FRP trata valores que mudam ao longo do tempo como valores regulares e utiliza dois conceitos principais: comportamentos e eventos. O framework RxJS é usado para demonstrar como lidar com streams de eventos de forma declarativa ao invés de imperativa.
This document discusses developing Android apps with Kotlin. It begins by noting some limitations of Java for Android development and how Kotlin addresses these issues through features like null safety, data classes, extensions, and interoperability with Java. It then provides code examples demonstrating Kotlin's syntax for various language constructs and how they can simplify Android development tasks. Finally, it recommends additional Kotlin resources and libraries that can enhance the Android development experience.
O documento introduz o Git, seu histórico de criação por Linus Torvalds para o desenvolvimento do Linux, e seus principais comandos e funcionalidades como branches, tags e resolução de conflitos.
Um algoritmo genético para o problema de roteamento de veículosPaulo Remoli
Um algoritmo genético é proposto para resolver o problema de roteamento de veículos, que busca minimizar a distância total percorrida pelos veículos respeitando suas capacidades. O algoritmo implementa operadores genéticos como cruzamento e mutação para gerar novas soluções e seleciona as melhores após avaliação. Resultados computacionais são apresentados usando uma instância com 43 clientes.
Annotation processing allows generating new Java files at build time from annotations without using reflection. It was introduced in Java 5 and lets you write processors to handle annotations. For Android, the android-apt Gradle plugin is needed to support annotation processing. A processor class extends AbstractProcessor and contains processing logic in the process() method to handle annotations and generate files. Examples generate getters automatically from fields or convert POJOs to strings.
This document provides an introduction to getting started with Kotlin and Android development. It discusses configuring the IDE and creating a Kotlin project. It then covers creating the first Kotlin class, introducing Kotlin extensions, functions, and lambdas. Finally, it demonstrates applying these Kotlin concepts by building an app with activities, entities, and an adapter to display a list of users.
From Hackathons to Startups: Building Products from Fresh IdeasChris Traganos
Closing keynote delivered at HackZurich on October 12, 2014 in Zurich Switzerland.
Lasting products have a solid team building together towards a shared goal. Hackathons and meetups are a great way to find team members who will compliment and push you to become better developers, designers, and product managers.
Hear examples from Silicon Valley projects that started as side projects and became life changing projects and why being a hacker for life will keep you fresh and valuable.
Kotlin is a JVM language developed by Jetbrains. Its version 1.0 (production ready) was released at the beginning of the year and made some buzz within the android community. This session proposes to discover this language, which takes up some aspects of groovy or scala, and that is very close to swift in syntax and concepts. We will see how Kotlin boosts the productivity of Java & Android application development and how well it accompanies reactive development.
Kotlin for Android - Vali Iorgu - mRreadyMobileAcademy
Kotlin is a programming language that runs on the Java Virtual Machine and is fully interoperable with Java. It aims to combine object-oriented and functional programming features and to improve developer productivity. Some key features of Kotlin include null safety, extension functions, inline functions and lambdas, and support for coroutines. It provides painless Java interoperability so existing Java code and libraries can be used from Kotlin.
The document introduces RxJava, a library for composing asynchronous and event-based programs using observable sequences for the Java Virtual Machine. It discusses the problems with asynchronous programming, provides an overview of reactive programming and reactive extensions, and describes RxJava's core types like Observable and Observer. It also covers key concepts like operators, schedulers, subjects, and dealing with backpressure in RxJava.
Reactive Programming on Android - RxAndroid - RxJavaAli Muzaffar
Introduction to RxJava for reactive programming and how to use RxAndroid to do reactive programming on Android.
There is a sample android app to go with the slides that has all the source shown in the project.
This document outlines the agenda for Season 2 Episode 2 of an event. The episode will include:
1. Lightning talks on various Reactive and Rx topics from different speakers
2. Guest speakers Jake Wharton from Square, Matt Ingenthron from Couchbase, and Will Sargent from Typesafe
3. More details on RxJava and composable reactive functions
This presentation is intended for giving an introduction to Genetic Algorithm. Using an example, it explains the different concepts used in Genetic Algorithm. If you are new to GA or want to refresh concepts , then it is a good resource for you.
New version of my Lean Startup for Agile Producy Management talk - first delivered at ACE! Krakow 2015. Hand-drawn slides by yours trully :) - a video of this talk is available at https://vimeo.com/122542926
Scala Data Pipelines for Music RecommendationsChris Johnson
Are you still building data pipelines with Java and Python? Are you curious about the current buzz in the Big Data community surrounding Scala as a data processing environment? In this talk I'll discuss how Spotify migrated its music recommendations pipeline from Python to Scala. I'll dive into the language specific features that make Scala the ideal candidate for big data processing as well as highlight the rich set of tools and APIs that we take advantage of to process music recommendations for our 50 Million active users including Scalding, Breeze, Kafka, Spark, Parquet, Driven and Zeppelin.
The Top Skills That Can Get You Hired in 2017LinkedIn
We analyzed all the recruiting activity on LinkedIn this year and identified the Top Skills employers seek. Starting Oct 24, learn these skills and much more for free during the Week of Learning.
#AlwaysBeLearning https://learning.linkedin.com/week-of-learning
Este documento fornece um resumo de 3 frases sobre tecnologias para desenvolvimento de software:
1) Apresenta um curso sobre diversas tecnologias Java como Servlets, JSP, JSF, EJB e Spring. 2) Fornece detalhes sobre o instrutor Rafael Benevides e sua experiência com Java. 3) A agenda inclui discussões sobre Servlets, JSP, Hibernate e outros temas ao longo de 9 dias.
[TDC2016] Apache SparkMLlib: Machine Learning na PráticaEiti Kimura
Presented with Flavio Clésio at TDCSP2016 showing a Machine Learning solution for tracking and monitoring a critical billing platform.
Code repository:
https://github.com/eiti-kimura-movile/spark-mllib-sample
TDC2016SP - SparkMLlib Machine Learning na Práticatdc-globalcode
O documento apresenta um caso de uso de machine learning na Movile para monitoramento de sua plataforma de tarifação. Foi desenvolvido o Watcher-AI, que usa regressão linear com Spark MLlib para prever métricas e detectar possíveis problemas com base nos dados históricos. O modelo treinado é implementado em Java para notificar a equipe quando há discrepâncias.
Orientação a Objetos - Da Teoria a Praticaelliando dias
Este documento fornece uma introdução aos principais tópicos relacionados à reutilização de projetos e software em Java, incluindo padrões de projeto, frameworks, componentes e objetos distribuídos. Exemplos de padrões como Observer, State e Composite são discutidos, assim como frameworks MVC e pacotes Java.
Orientacao A Objetos Da Teoria A Pratica Em Javaelliando dias
Este documento fornece uma introdução aos principais tópicos relacionados à reutilização de projetos e software em Java, incluindo padrões de projeto, frameworks, componentes e objetos distribuídos. Exemplos de padrões como Observer, State e Composite são discutidos, assim como frameworks MVC e pacotes Java.
Este documento apresenta conceitos de arquitetura de software para aplicações Node.js, incluindo padrões como camadas de domínio, repositório e controlador separados, testes automatizados e implantações seguras. O objetivo é construir aplicações escaláveis e de fácil manutenção aplicando boas práticas de engenharia de software.
Este documento apresenta o framework Play! e discute seus principais conceitos e componentes. Em 3 frases:
O Play! é um framework web full-stack para Java e Scala que utiliza arquitetura MVC e convenção sobre configuração. Ele possui componentes como rotas, controladores, modelos e views para construir aplicações web. O documento demonstra como criar um projeto Play! simples para gerenciar tarefas utilizando esses componentes.
O documento apresenta uma introdução ao framework ASP.NET MVC. Resume os principais pontos sobre arquitetura MVC, controllers, models, views, rotas e HTML helpers no ASP.NET MVC. Inclui demonstrações de criação de projeto e de uma aplicação simples de carros.
Este documento apresenta como o Elasticsearch, Kibana, Logstash e Codahale Metrics podem ser usados para monitoramento em tempo real de sistemas. O Elasticsearch é usado para armazenar e pesquisar dados, o Logstash coleta e envia dados para o Elasticsearch, o Kibana permite visualizar e analisar os dados armazenados no Elasticsearch e o Codahale Metrics gera métricas sobre o desempenho do código que podem ser enviadas para o Elasticsearch. Exemplos demonstram como esses ferramentas podem ser usadas para detectar anomalias, me
1) O documento apresenta Fernando Oliveira e seu histórico profissional com foco em tecnologias como Java, C, Python e banco de dados.
2) Introduz o framework Struts como uma solução para desenvolvimento de aplicações web baseada nos padrões MVC e FrontController.
3) Explica brevemente os principais conceitos do Struts como Actions, Results e Properties para acesso a dados nas views.
O documento resume uma apresentação sobre o framework Struts 2 e seu uso no projeto Minha Casa Minha Vida. O documento discute o que é Struts, seu histórico, recursos principais e como foi usado no projeto, com foco na arquitetura MVC e validação.
[DTC21] Thiago Lima - Do Zero ao 100 no Mundo de MicroservicesDeep Tech Brasil
Thiago Lima é um empreendedor e especialista em tecnologia com mais de 30 anos de experiência desenvolvendo e liderando equipes de tecnologia. Ele falará sobre microsserviços, desde a decomposição de sistemas até práticas de monitoramento e resiliência.
Javaone Brazil 2012: Integrando Ext JS 4 com Java EELoiane Groner
O documento discute a integração do framework Ext JS com Java EE, incluindo prós e contras dos diferentes frameworks e cuidados necessários. Ele também apresenta exemplos de arquitetura para projetos que utilizam Ext JS e Java, além de opções para comunicação entre as tecnologias.
Palestra que ministrei no Join Community 2017.
Link do projeto Hystrix: https://github.com/Netflix/Hystrix/
Hystrix Dashboard: https://github.com/Netflix/Hystrix/tree/master/hystrix-dashboard
O documento discute as novidades da plataforma Java EE 7, incluindo o foco em serviços de computação em nuvem, auto provisionamento e multi-tenancy. A especificação Java EE 7 também trará melhorias em APIs existentes como JPA, JSF e JAX-RS e novas APIs como JSON-P e WebSocket. O lançamento está previsto para o primeiro semestre de 2013.
InfluxDb: como monitorar milhares de dados por segundo em real time Umbler
Slides da Palestra apresentada na Trilha Banco de Dados do The Developers Conference 2016 - São Paulo.
A palestra aborda os principais conceitos sobre Time series database (TSDB), e demonstra como utilizar a stack TICK (Telegraf, InfluxDb, Conograph, Kapacitor) da InfluxData para resolver problemas de monitoria de dados em grande escala, gerando gráficos e alertas em tempo real.
O documento discute bancos de dados de séries temporais (TSDB), apresentando o InfluxDB como um exemplo de TSDB open source. Ele descreve como escrever e consultar dados no InfluxDB, incluindo funções, agregações e consultas contínuas. Também discute a stack TICK da InfluxData para coleta, armazenamento e análise de dados de séries temporais.
O documento descreve recursos avançados da linguagem SQL e do banco de dados PostgreSQL. Ele apresenta conceitos como Common Table Expression (CTEs), Window Functions e Full Text Search no PostgreSQL, além de detalhar a organização do padrão SQL e recursos de manipulação de dados externos. O objetivo é mostrar como otimizar consultas e acesso a dados usando recursos do padrão SQL e extensões do PostgreSQL.
Semelhante a RxJava - Programação assíncrona para Android. (20)
2. O objetivo dessa apresentação é
mostrar um pouco do poder do
RxJava o porque dele ser incrível
2
3. Quem sou eu
• Clêrton Leal
• Nascido e criado em Fortaleza
• Vivendo em Belo Horizonte a pouco mais de 2 meses
• Atualmente trabalhando como consultor para Avenue Code
3
4. Um pouco de história
Será rápido eu prometo =)
4
5. Reactive Extensions é uma biblioteca, de programação
orientada a eventos, desenvolvida pela Microsoft e liberada
para o .NET framework em 2011.
Implementa e extende o padrão Observable clássico, porem
com um tratamento mais refinado para threads.
5
6. Em 2012 a Netflix adota o uso de Reactive Extensions para
seus módulos escritos em .NET e fica surpresa com a
facilidade de programação assíncrona.
Em 2013 a Netflix libera um projeto open source chamado
RxJava, uma implementação da especificação RX para Java.
Possibilitando assim o uso de RX em todos os seus módulos
escritos em Java e Scala.
6
13. RxSwift
let source = Observable.create { observer in
do {
for i in 1...5 {
observer.on(.Next(i))
}
observer.on(.Completed)
} catch {
observer.on(.Error)
}
}
13
27. Schedulers
• Schedulers.computation() - Usado para ações em CPU
bound em multi thread.
• Schedulers.io() - Usado para ações em IO bound.
• Schedulers.newThread() - Execução em nova thread.
• Schedulers.immediate() - Execução na thread atual.
• Schedulers.trampoline() - Execução na thread atual, mas
apenas após outras ações enfileiradas.
27
30. Em quantas linhas?
• Campo de texto irá buscar em um
serviço web
• Buscas feitas apenas com pelo
menos 3 caracteres
• Buscas feitas apenas quando o
usuário passar 500 milissegundos
sem digitar
30
31. Precisamos criar um observable
do SearchView
public Observable<String> getSearchObservable(SearchView searchView) {
return Observable.create(new Observable.OnSubscribe<String>() {
@Override
public void call(Subscriber<? super String> subscriber) {
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
subscriber.onNext(newText);
return true;
}
});
}
});
}
31
32. E depois aplicar algumas
transformações
public Observable<String> getSearchObservable(SearchView searchView) {
return Observable.create(new Observable.OnSubscribe<String>() {
@Override
public void call(Subscriber<? super String> subscriber) {
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
subscriber.onNext(newText);
return true;
}
});
}
}).filter(s -> fragment != null)
.map(s -> "http://search.com.br/" + s)
.filter(s -> s.length() >= 3)
.debounce(500, TimeUnit.MILLISECONDS)
.observeOn(AndroidSchedulers.mainThread())
.observeOn(Schedulers.computation());
32
33. E apenas isso na sua camada de
visão
getSearchObservable(searchField).subscribe(s -> {
doRequest();
})
33
35. Facil de cancelar
• Sempre que chamamos o método subscribe(), o retorno do
mesmo é uma Subscription.
• Uma subscription pode ser facilmente cancelada.
Subscription subscription = getSearchObservable(searchField).subscribe(s -> {
doRequest();
});
subscription.unsubscribe();
35