SlideShare uma empresa Scribd logo
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!
Conectando o Android a outros sistemas
Responsável por
componentes e suas
ações(callbacks).
Conectando o Android a outros sistemas
Pode ficar bloqueada por
apenas alguns segundos.
Conectando o Android a outros sistemas
Conectando o Android a outros sistemas
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();
Conectando o Android a outros sistemas
Conectando o Android a outros sistemas
AsyncTask
UI Thread Worker Thread
OnPreExecute
doInBackground
OnPreExecute
onProgressUpdate
OnPostExecute
Como usar?Extende AsyncTask! ;D
new MyAsyncTask().execute(params);
Conectando o Android a outros sistemas
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.
Conectando o Android a outros sistemas
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);
Conectando o Android a outros sistemas
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;
//....
Conectando o Android a outros sistemas
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....
Conectando o Android a outros sistemas
Perguntas?
@elias_era / http://www.eliasgranja.com.br
Elias Granja

Mais conteúdo relacionado

KEY
Servlets 3: o contexto assíncrono - JavaOne 2010 - Paulo Silveira
PDF
Operação e Monitoramento de Aplicações Java... e agora?
PDF
Fabric
PDF
A explosão do Node.js: JavaScript é o novo preto
PPTX
Apresentacao deploy
PDF
Turbolinks 5 + PWA (Progressive Web Apps)
PDF
Node.js - #5 - Process - Rodrigo Branas
PDF
Aumente sua produtividade com Spring Boot
Servlets 3: o contexto assíncrono - JavaOne 2010 - Paulo Silveira
Operação e Monitoramento de Aplicações Java... e agora?
Fabric
A explosão do Node.js: JavaScript é o novo preto
Apresentacao deploy
Turbolinks 5 + PWA (Progressive Web Apps)
Node.js - #5 - Process - Rodrigo Branas
Aumente sua produtividade com Spring Boot

Mais procurados (9)

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

Destaque (8)

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

Último (19)

PDF
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
PDF
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
PPTX
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
PDF
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
PDF
Custos e liquidação no SAP Transportation Management, TM130 Col18
PPTX
BANCO DE DADOS - AULAS INICIAIS-sgbd.pptx
PDF
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
PDF
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
PDF
Processos na gestão de transportes, TM100 Col18
PPTX
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
PDF
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
PDF
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
PDF
Apple Pippin Uma breve introdução. - David Glotz
PDF
COBITxITIL-Entenda as diferença em uso governança TI
PPTX
Aula 18 - Manipulacao De Arquivos python
PPTX
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
PPTX
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
PPTX
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss
PDF
Aula04-Academia Heri- Tecnologia Geral 2025
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
Custos e liquidação no SAP Transportation Management, TM130 Col18
BANCO DE DADOS - AULAS INICIAIS-sgbd.pptx
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
Processos na gestão de transportes, TM100 Col18
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
Apple Pippin Uma breve introdução. - David Glotz
COBITxITIL-Entenda as diferença em uso governança TI
Aula 18 - Manipulacao De Arquivos python
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss
Aula04-Academia Heri- Tecnologia Geral 2025

Conectando o Android a outros sistemas

Notas do Editor

  • #12: Android irá matar o aplicativo se não respeitarmos o limite de tempo da UI Thread. Autalmente 5 segundos
  • #14: Dessa forma criamos outra thread e temos tempo “infinito” para fazermos o que acharmos melhor.
  • #15: 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
  • #16: http://developer.android.com/reference/android/app/Activity.html#runOnUiThread%28java.lang.Runnable%29
  • #22: 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
  • #38: 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.