Simples pelo simples google android com robo guice

Preview:

Citation preview

Simples pelo Simples:

Google Android com RoboGuice

Diogo Souza

http://diogosouza.com.br

Diogo Souza

Entusiasta Java e

grande curioso do

Android (mesmo sem

um samsung galaxy...)

Systems Analyst at

Instituto Atlântico

@diogo_souza_c

http://diogosouza.com.b

rhttp://conference.javace.org/

http://conference.javace.org/

Hablando Androlês...

http://conference.javace.org/

Hablando Androlês...

http://conference.javace.org/

Programadores Android

Usam Roboguice

Não usam

Mas por quê?

Quem usa?

http://conference.javace.org/

Mas afinal de contas, quem é

esse tal de RoboGuice?

http://conference.javace.org/

Partes rápidas

Framework de injeção de dependências

Código-aberto

Feito para o Android

Base no projeto Google Guice

http://conference.javace.org/

Revisando...

By Wikipédia:

“(Dependency Injection, em inglês) é um padrão de

desenvolvimento de programas de computadores

utilizado quando é necessário manter baixo o nível de

acoplamento entre diferentes módulos de um sistema.”

http://conference.javace.org/

Um pouco de história

O Cara Michael Burton

Engenheiro de

Software

Líder no Groupon

Autor do RoboGuice

Acredite, não consegui nenhuma imagem

melhor...

http://conference.javace.org/

Um pouco de história

“Menos código significa menos

possibilidades de bugs”

“É quase impossível escrever uma app

Android que não se pareça com uma app

Android”

(Mike Burton)http://conference.javace.org/

Entendendo este suco

Primeiro tínhamos (e ainda temos) as

fábricas estáticas

E agora, injeção!

http://conference.javace.org/

Entendendo este suco

E o que posso injetar com ele?

Views

Resources, extras, contentViews

POJOs (sim, ele usa o construtor default)

Contextos e atividades

http://conference.javace.org/

E como ele faz isso?

Context. That’s the secret!

http://conference.javace.org/

Configurando...

Baixe os jars (roboguice v.2.0 e guice v3.0)

Adicione ao projeto/classpath

Enjoy the play!!

http://conference.javace.org/

Configurando...

E pra quem curte o maven (quem não curte?):

<dependency>

<groupId>org.roboguice</groupId>

<artifactId>roboguice</artifactId>

<version>2.0</version>

</dependency>

http://conference.javace.org/

Show me the code (e um exemplo)

http://conference.javace.org/

Ah sim, a Activity...

Show me the code (e um exemplo)

http://conference.javace.org/

HttpServlet JFrame Activity

Show me the code (e um exemplo)

http://conference.javace.org/

Não é raro encontrar:

Activities grandes

Com muitas responsabilidades

Chamando umas às outras, ou outros objetos até, e

enviando também suas próprias referências

Contando uma história...

Show me the code

http://conference.javace.org/

Show me the code

http://conference.javace.org/

Coisas demais...

http://conference.javace.org/

E pode ter mais, tudo dentro da mesma

Activity!!

Muita responsabilidade para a Activity!

(Não é legal!)

Então o que fazer?

http://conference.javace.org/

Dividir para conquistar!

Separamos as responsabilidades

Uma classe a parte...

http://conference.javace.org/

E uma Activity mais simples

http://conference.javace.org/

http://conference.javace.org/

Ok melhorou... Mas

ainda não estou

sentindo aquela

sensação de “saciedade

codificada mórbida”...

É aí onde entra o RoboGuice

http://conference.javace.org/

Sem mais delongas... Vamos ao código:

E o novo CalculoIMCActivity

http://conference.javace.org/

Só pra não dizer que não mostrei a telinha...

http://conference.javace.org/

Legal, né?

http://conference.javace.org/

RoboGuice é como uma factory methods

gratuita!

@Inject é o novo new

O que mais posso fazer?

http://conference.javace.org/

System Services

@Inject Vibrator vibrator

this.getSystemService(Context.VIBRATOR_SERVIC

E);

@Inject SharedPreferences preferencias

O que mais posso fazer?

http://conference.javace.org/

Ainda view’s

@Inject Random random

@InjectExtra Bundle extra

Ainda tem mais?

http://conference.javace.org/

Logs

Classe Ln (Log Natural)

É mais rápida

Recurso a varargs

Debug e verbose são os mais dispendiosos

Vai um progresso aí?

http://conference.javace.org/

Vai um progresso aí?

http://conference.javace.org/

E o teste?

http://conference.javace.org/

Preciso nem perguntar se

todo mundo testa o

código que faz... :P

E o teste?

http://conference.javace.org/

Tá brincando que tem mais?!

http://conference.javace.org/

Se tem? Muito mais...

Onde encontrar?

Nas referências

No meu blog: http://diogosouza.com.br

Internet

Referências

http://code.google.com/p/roboguice/

http://www.lukew.com/

http://blog.caelum.com.br/

http://www.gonow.com.br

http://conference.javace.org/

http://conference.javace.org/

http://conference.javace.org/

Simplicidade

O simples pelo Simples...

Ou melhor, o mais simples

pelo simples...

http://conference.javace.org/

Obrigado!!