SlideShare uma empresa Scribd logo
1 de 42
Conectando o Android
a outros sistemas.
Elias Granja
Desenvolvedor @ciandt
@elias_era / http://www.eliasgranja.com.br
Sobre o que é a palestra?
●
UI Thread.
●
AsyncTask.
●
Trabalhando com Json.
●
Conexão com a web.
●
Cache!
Ui Thread?
Vulgo Main Thread!
Responsável por
componentes e suas
ações(callbacks).
Pode ficar bloqueada por
apenas alguns segundos.
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
//SOMETHING BIG HERE
Toast.makeText(context, “feito”,duration)
.show();
}
});
thread.start();
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
//SOMETHING BIG HERE
Toast.makeText(context, “feito”,duration)
.show();
}
});
thread.start();
MyActivity.this.runOnUiThread(
new Runnable() {
public void run(){
Toast.makeText(context,
“feito”,duration).show();
}
});
}
});
thread.start();
AsyncTask
UI Thread Worker Thread
OnPreExecute
doInBackground
OnPreExecute
onProgressUpdate
OnPostExecute
Como usar?Extende AsyncTask! ;D
new MyAsyncTask().execute(params);
Pera, o que?
extends AsyncTask<Params, Progress, Result>
protected Result doInBackground(Params... params)
protected void onProgressUpdated(Progress... progress)
protected void onPostExecute(Result result)
protect final publishProgress(Progress.. progress)
protected void onPreExecute()
As regras
●
A instância da task precisa ser criada na UI Thread.
● O método execute precisa ser chamado na UI Thread.
●
Não chame na mão os métodos “especiais”.
●
Uma task só pode ser executada uma vez, uma
execção será lançada se tentar executar uma
segunda vez.
Paralelização entre as tasks?
●
Desde a versão 3 do android as tasks são executadas
numa única thread.
Se quiser execuções verdadeiramente paralelas, chame:
MyAsyncTask.
executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, Params params.
Web?
<uses-permission
android:name="android.permission.INTERNET" />
DefaultHttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost(“http://flisol.net”);
post.setEntity(new StringEntity(“{name:'elias'}”));
HttpResponse rs = client.execute(post);
String json = EntityUtils.toString(rs.getEntity());
Trabalhando com JSON
JSONStringer
{
name: “Elias”,
state: “SP”,
}
JSONStringer js = new JSONString();
js.object();
js.key(“name”).value(“Elias”);
js.key(“state”).value(“SP”);
js.endObject();
JSONObject
object.getString(“name”);
object.getString(“state”);
//object.getLong
//object.getJSONArray
//object.getJSONObject
.....
JSONObject object = new JSONObject(json);
GSON
String json = Gson.toJson(elias);
GsonBuilder builder = new GsonBuilder();
Gson gson = builder.create();
GSON
Person elias =
Gson.fromJson(json, Person.class)
GsonBuilder builder = new GsonBuilder();
Gson gson = builder.create();
Cache!
Static?
Class FacebookPhotosTask<URL, Integer, Image>{
Static Map<String,Image> myPhoto;
//....
Application?
< Application
Android:name=”br.com.eliasgranja.app.ExampleApp”>
No manifesto
Public class ExampleApp extends Application{
Private Map<String,Image> cache;
Public void cache(Image image, String name){
Cache.put(name,image);
}
Criando a class
ExampleApp app =
(ExampleApp) myActivity.getApplication();
Utilizando na Activity
Quem é melhor?
Então....
Perguntas?
@elias_era / http://www.eliasgranja.com.br
Elias Granja

Mais conteúdo relacionado

Mais procurados

Inversão de Controlo (IoC) / Injecção de Dependência (DI) - Bruno Lopes & C. ...
Inversão de Controlo (IoC) / Injecção de Dependência (DI) - Bruno Lopes & C. ...Inversão de Controlo (IoC) / Injecção de Dependência (DI) - Bruno Lopes & C. ...
Inversão de Controlo (IoC) / Injecção de Dependência (DI) - Bruno Lopes & C. ...Comunidade NetPonto
 
Sistemas de Automação I - Interrupções
Sistemas de Automação I - InterrupçõesSistemas de Automação I - Interrupções
Sistemas de Automação I - InterrupçõesThiago Fortunato
 
Infraestrutura como código com Puppet e Mcollective
Infraestrutura como código com Puppet e McollectiveInfraestrutura como código com Puppet e Mcollective
Infraestrutura como código com Puppet e McollectiveJose Augusto Carvalho
 
Node.js - #3 - Global Objects - Rodrigo Branas
Node.js - #3 - Global Objects - Rodrigo BranasNode.js - #3 - Global Objects - Rodrigo Branas
Node.js - #3 - Global Objects - Rodrigo BranasRodrigo Branas
 
Aplicação Distribuída com Docker Swarm (Meetup GruPy-SP)
Aplicação Distribuída com Docker Swarm (Meetup GruPy-SP)Aplicação Distribuída com Docker Swarm (Meetup GruPy-SP)
Aplicação Distribuída com Docker Swarm (Meetup GruPy-SP)Wellington Silva
 
Introducão ao Grok - PyConBrasil 3
Introducão ao Grok - PyConBrasil 3Introducão ao Grok - PyConBrasil 3
Introducão ao Grok - PyConBrasil 3Dirceu Pereira Tiegs
 
Um Mundo Java Sem XML
Um Mundo Java Sem XMLUm Mundo Java Sem XML
Um Mundo Java Sem XMLiMasters
 
Oficina postgresql avançado_consegi2010
Oficina postgresql avançado_consegi2010Oficina postgresql avançado_consegi2010
Oficina postgresql avançado_consegi2010Fabrízio Mello
 

Mais procurados (9)

Inversão de Controlo (IoC) / Injecção de Dependência (DI) - Bruno Lopes & C. ...
Inversão de Controlo (IoC) / Injecção de Dependência (DI) - Bruno Lopes & C. ...Inversão de Controlo (IoC) / Injecção de Dependência (DI) - Bruno Lopes & C. ...
Inversão de Controlo (IoC) / Injecção de Dependência (DI) - Bruno Lopes & C. ...
 
Sistemas de Automação I - Interrupções
Sistemas de Automação I - InterrupçõesSistemas de Automação I - Interrupções
Sistemas de Automação I - Interrupções
 
METEOR
METEORMETEOR
METEOR
 
Infraestrutura como código com Puppet e Mcollective
Infraestrutura como código com Puppet e McollectiveInfraestrutura como código com Puppet e Mcollective
Infraestrutura como código com Puppet e Mcollective
 
Node.js - #3 - Global Objects - Rodrigo Branas
Node.js - #3 - Global Objects - Rodrigo BranasNode.js - #3 - Global Objects - Rodrigo Branas
Node.js - #3 - Global Objects - Rodrigo Branas
 
Aplicação Distribuída com Docker Swarm (Meetup GruPy-SP)
Aplicação Distribuída com Docker Swarm (Meetup GruPy-SP)Aplicação Distribuída com Docker Swarm (Meetup GruPy-SP)
Aplicação Distribuída com Docker Swarm (Meetup GruPy-SP)
 
Introducão ao Grok - PyConBrasil 3
Introducão ao Grok - PyConBrasil 3Introducão ao Grok - PyConBrasil 3
Introducão ao Grok - PyConBrasil 3
 
Um Mundo Java Sem XML
Um Mundo Java Sem XMLUm Mundo Java Sem XML
Um Mundo Java Sem XML
 
Oficina postgresql avançado_consegi2010
Oficina postgresql avançado_consegi2010Oficina postgresql avançado_consegi2010
Oficina postgresql avançado_consegi2010
 

Destaque

Front-end para back-end developers
Front-end para back-end developersFront-end para back-end developers
Front-end para back-end developersElias Junior
 
Agiles2011 - A story of transformation: how Lean & Agile + Nearhore can incre...
Agiles2011 - A story of transformation: how Lean & Agile + Nearhore can incre...Agiles2011 - A story of transformation: how Lean & Agile + Nearhore can incre...
Agiles2011 - A story of transformation: how Lean & Agile + Nearhore can incre...Fernando Ostanelli
 
A Story of Transformation: How Lean & Agile + Nearshore Outsourcing Can Incre...
A Story of Transformation: How Lean & Agile + Nearshore Outsourcing Can Incre...A Story of Transformation: How Lean & Agile + Nearshore Outsourcing Can Incre...
A Story of Transformation: How Lean & Agile + Nearshore Outsourcing Can Incre...CI&T
 
1st CI&T Lightning Talks: Writing better code with Object Calisthenics
1st CI&T Lightning Talks: Writing better code with Object Calisthenics1st CI&T Lightning Talks: Writing better code with Object Calisthenics
1st CI&T Lightning Talks: Writing better code with Object CalisthenicsLucas Arruda
 
Previsões - 2016, o ano dos bancos
Previsões - 2016, o ano dos bancosPrevisões - 2016, o ano dos bancos
Previsões - 2016, o ano dos bancosCI&T
 
Previsões em digital para 2015
Previsões em digital para 2015Previsões em digital para 2015
Previsões em digital para 2015CI&T
 
Scaling Agile With SAFe (Scaled Agile Framework)
Scaling Agile With SAFe (Scaled Agile Framework)Scaling Agile With SAFe (Scaled Agile Framework)
Scaling Agile With SAFe (Scaled Agile Framework)Andreano Lanusse
 
The Near Future of CSS
The Near Future of CSSThe Near Future of CSS
The Near Future of CSSRachel Andrew
 

Destaque (8)

Front-end para back-end developers
Front-end para back-end developersFront-end para back-end developers
Front-end para back-end developers
 
Agiles2011 - A story of transformation: how Lean & Agile + Nearhore can incre...
Agiles2011 - A story of transformation: how Lean & Agile + Nearhore can incre...Agiles2011 - A story of transformation: how Lean & Agile + Nearhore can incre...
Agiles2011 - A story of transformation: how Lean & Agile + Nearhore can incre...
 
A Story of Transformation: How Lean & Agile + Nearshore Outsourcing Can Incre...
A Story of Transformation: How Lean & Agile + Nearshore Outsourcing Can Incre...A Story of Transformation: How Lean & Agile + Nearshore Outsourcing Can Incre...
A Story of Transformation: How Lean & Agile + Nearshore Outsourcing Can Incre...
 
1st CI&T Lightning Talks: Writing better code with Object Calisthenics
1st CI&T Lightning Talks: Writing better code with Object Calisthenics1st CI&T Lightning Talks: Writing better code with Object Calisthenics
1st CI&T Lightning Talks: Writing better code with Object Calisthenics
 
Previsões - 2016, o ano dos bancos
Previsões - 2016, o ano dos bancosPrevisões - 2016, o ano dos bancos
Previsões - 2016, o ano dos bancos
 
Previsões em digital para 2015
Previsões em digital para 2015Previsões em digital para 2015
Previsões em digital para 2015
 
Scaling Agile With SAFe (Scaled Agile Framework)
Scaling Agile With SAFe (Scaled Agile Framework)Scaling Agile With SAFe (Scaled Agile Framework)
Scaling Agile With SAFe (Scaled Agile Framework)
 
The Near Future of CSS
The Near Future of CSSThe Near Future of CSS
The Near Future of CSS
 

Semelhante a Conectando Android a outros sistemas

Ecosistema spring a_plataforma_enterprise_jav
Ecosistema spring a_plataforma_enterprise_javEcosistema spring a_plataforma_enterprise_jav
Ecosistema spring a_plataforma_enterprise_javJulio Viegas
 
TDC 2014 SP - E o DeltaSpike ?
TDC 2014 SP - E o DeltaSpike ?TDC 2014 SP - E o DeltaSpike ?
TDC 2014 SP - E o DeltaSpike ?Rafael Benevides
 
DevDay - O elo perdido: sincronizando webapps
DevDay - O elo perdido: sincronizando webappsDevDay - O elo perdido: sincronizando webapps
DevDay - O elo perdido: sincronizando webappsSuissa
 
Live Tiles e Background Executions - TDC SP 2015
Live Tiles e Background Executions - TDC SP 2015Live Tiles e Background Executions - TDC SP 2015
Live Tiles e Background Executions - TDC SP 2015talkitbr
 
Groovy para javeiros - Migração Painless
Groovy para javeiros - Migração PainlessGroovy para javeiros - Migração Painless
Groovy para javeiros - Migração PainlessRafael Farias Silva
 
Minha aplicação Java vai pra nuvem. E agora?
Minha aplicação Java vai pra nuvem. E agora?Minha aplicação Java vai pra nuvem. E agora?
Minha aplicação Java vai pra nuvem. E agora?Felipe Mamud
 
TDC 2015 - Execução em Background e Live Tiles em Universal Apps
TDC 2015 - Execução em Background e Live Tiles em Universal AppsTDC 2015 - Execução em Background e Live Tiles em Universal Apps
TDC 2015 - Execução em Background e Live Tiles em Universal AppsDiego Castro
 
Desenvolvendo com Dojo Toolkit
Desenvolvendo com Dojo ToolkitDesenvolvendo com Dojo Toolkit
Desenvolvendo com Dojo ToolkitFlávio Lisboa
 
Persistência com Realm.io
Persistência com Realm.ioPersistência com Realm.io
Persistência com Realm.ioOnyo
 
Produtividade na web_com_groovy_e_grails_pt2
Produtividade na web_com_groovy_e_grails_pt2Produtividade na web_com_groovy_e_grails_pt2
Produtividade na web_com_groovy_e_grails_pt2Lucas Aquiles
 
Como ser programador durante o dia e mesmo assim dormir bem à noite
Como ser programador durante o dia e mesmo assim dormir bem à noiteComo ser programador durante o dia e mesmo assim dormir bem à noite
Como ser programador durante o dia e mesmo assim dormir bem à noiteComunidade NetPonto
 
Java - Introdução a banco de dados
Java - Introdução a banco de dadosJava - Introdução a banco de dados
Java - Introdução a banco de dadosSérgio Souza Costa
 
better faster stronger dagger
better faster stronger daggerbetter faster stronger dagger
better faster stronger daggertdc-globalcode
 
TDC - Introdução ao Actor Model com Microsoft Orleans
TDC - Introdução ao Actor Model com Microsoft OrleansTDC - Introdução ao Actor Model com Microsoft Orleans
TDC - Introdução ao Actor Model com Microsoft OrleansFabio Gouw
 
Flávio Almeida MEAN Stack "to be or not to be mean"
Flávio Almeida MEAN Stack "to be or not to be mean"Flávio Almeida MEAN Stack "to be or not to be mean"
Flávio Almeida MEAN Stack "to be or not to be mean"flaviohalmeida
 
Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007Rafael Benevides
 

Semelhante a Conectando Android a outros sistemas (20)

Ecosistema spring a_plataforma_enterprise_jav
Ecosistema spring a_plataforma_enterprise_javEcosistema spring a_plataforma_enterprise_jav
Ecosistema spring a_plataforma_enterprise_jav
 
TDC 2014 SP - E o DeltaSpike ?
TDC 2014 SP - E o DeltaSpike ?TDC 2014 SP - E o DeltaSpike ?
TDC 2014 SP - E o DeltaSpike ?
 
DevDay - O elo perdido: sincronizando webapps
DevDay - O elo perdido: sincronizando webappsDevDay - O elo perdido: sincronizando webapps
DevDay - O elo perdido: sincronizando webapps
 
Live Tiles e Background Executions - TDC SP 2015
Live Tiles e Background Executions - TDC SP 2015Live Tiles e Background Executions - TDC SP 2015
Live Tiles e Background Executions - TDC SP 2015
 
Kotlin first
Kotlin firstKotlin first
Kotlin first
 
Fisl12
Fisl12Fisl12
Fisl12
 
Groovy para javeiros - Migração Painless
Groovy para javeiros - Migração PainlessGroovy para javeiros - Migração Painless
Groovy para javeiros - Migração Painless
 
Minha aplicação Java vai pra nuvem. E agora?
Minha aplicação Java vai pra nuvem. E agora?Minha aplicação Java vai pra nuvem. E agora?
Minha aplicação Java vai pra nuvem. E agora?
 
Minicurso groovy grails
Minicurso groovy grailsMinicurso groovy grails
Minicurso groovy grails
 
TDC 2015 - Execução em Background e Live Tiles em Universal Apps
TDC 2015 - Execução em Background e Live Tiles em Universal AppsTDC 2015 - Execução em Background e Live Tiles em Universal Apps
TDC 2015 - Execução em Background e Live Tiles em Universal Apps
 
Desenvolvendo com Dojo Toolkit
Desenvolvendo com Dojo ToolkitDesenvolvendo com Dojo Toolkit
Desenvolvendo com Dojo Toolkit
 
Threads
ThreadsThreads
Threads
 
Persistência com Realm.io
Persistência com Realm.ioPersistência com Realm.io
Persistência com Realm.io
 
Produtividade na web_com_groovy_e_grails_pt2
Produtividade na web_com_groovy_e_grails_pt2Produtividade na web_com_groovy_e_grails_pt2
Produtividade na web_com_groovy_e_grails_pt2
 
Como ser programador durante o dia e mesmo assim dormir bem à noite
Como ser programador durante o dia e mesmo assim dormir bem à noiteComo ser programador durante o dia e mesmo assim dormir bem à noite
Como ser programador durante o dia e mesmo assim dormir bem à noite
 
Java - Introdução a banco de dados
Java - Introdução a banco de dadosJava - Introdução a banco de dados
Java - Introdução a banco de dados
 
better faster stronger dagger
better faster stronger daggerbetter faster stronger dagger
better faster stronger dagger
 
TDC - Introdução ao Actor Model com Microsoft Orleans
TDC - Introdução ao Actor Model com Microsoft OrleansTDC - Introdução ao Actor Model com Microsoft Orleans
TDC - Introdução ao Actor Model com Microsoft Orleans
 
Flávio Almeida MEAN Stack "to be or not to be mean"
Flávio Almeida MEAN Stack "to be or not to be mean"Flávio Almeida MEAN Stack "to be or not to be mean"
Flávio Almeida MEAN Stack "to be or not to be mean"
 
Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007
 

Conectando Android a outros sistemas

Notas do Editor

  1. Android irá matar o aplicativo se não respeitarmos o limite de tempo da UI Thread. Autalmente 5 segundos
  2. Dessa forma criamos outra thread e temos tempo “infinito” para fazermos o que acharmos melhor.
  3. O código parecia ser bonito, mas não podemos alterar a tela do usuário por uma thread que não seja a UI thread. Então temos que fazer algumas “gambiarras” para conseguirmos isso. http://developer.android.com/reference/android/app/Activity.html#runOnUiThread%28java.lang.Runnable%29
  4. http://developer.android.com/reference/android/app/Activity.html#runOnUiThread%28java.lang.Runnable%29
  5. A classe AsyncTask tem 3 métodos abstrados que devemos definir comportamento. Dbackground que fará o trabalho. ProgressUpdated para mostrar algum tipo de progresso na tela do usuário. E por fim postExecute que já tem o resultado final. PostExecute é chamado automaticamente, enquanto que o ProgressUpdated precisa ser chamado manualmente via publishProgress. “ Forma de reutilizar o mesmo código com diferentes inputs” – Oracle docs
  6. Base class for those who need to maintain global application state. You can provide your own implementation by specifying its name in your AndroidManifest.xml&apos;s &lt;application&gt; tag, which will cause that class to be instantiated for you when the process for your application/package is created.