|
Página 1 de 1
|
[ 6 Mensagens ] |
|
[Mini Tuto] AsyncTask e ProgressDialog - Ex02
| Autor |
Mensagem |
|
A H Gusukuma
Dalvik Virtual Machine
Data de registro: 17 Jul 2011, 10:55 Mensagens: 1995 Localização: São Paulo
|
 [Mini Tuto] AsyncTask e ProgressDialog - Ex02
Para efeito de comparação com o Mini Tuto viewtopic.php?f=7&t=17430, vamos fazer a mesma coisa usando no lugar da Thread, Handler e Runnable um exemplo com a classe AsyncTask. Fica um código mais simples, intuitivo e clean! Nem vou comentar. Seguem os códigos! package br. com. agorandroid. testeasynctask01; import android. app. Activity; import android. os. AsyncTask; import android. os. Bundle; import android. app. ProgressDialog; import android. view. View; import android. view. View. OnClickListener; import android. widget. Button; import android. widget. Toast; /** * @author A H Gusukuma * agorandroid.blogspot.com */public class TesteAsyncTask01Activity extends Activity { Button button; MyAsyncTask mAsyncTask; ProgressDialog mDialog; /** Called when the activity is first created. */ @Override public void onCreate (Bundle savedInstanceState ) { super. onCreate(savedInstanceState ); setContentView (R. layout. main); button = (Button) findViewById (R. id. iniciarAsyncTask); button. setOnClickListener(new OnClickListener () { public void onClick (View v ) { ativaAsyncTask (); } }); } private void ativaAsyncTask () { mAsyncTask = new MyAsyncTask (); mAsyncTask. execute(5); } private class MyAsyncTask extends AsyncTask<Integer, Void, Integer> { protected void onPreExecute () { mDialog = ProgressDialog. show(TesteAsyncTask01Activity. this, "Aguarde", "Processando...", false, false); } protected Integer doInBackground (Integer... progress) { int i = 0; do { try { Thread. sleep(1000); i++; } catch (InterruptedException e ) { } } while (i<progress [0]); return (Integer) i; } protected void onPostExecute (Integer result ) { mDialog. dismiss(); Toast. makeText(TesteAsyncTask01Activity. this, "Fim da AsyncTask", Toast. LENGTH_SHORT). show(); } } } <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> <Button android:text="Iniciar AsyncTask" android:id="@+id/iniciarAsyncTask" android:layout_width="fill_parent" android:layout_height="wrap_content"> </Button> </LinearLayout>
Bons códigos!
_________________Abraços ___________ Novo App: CalcMat - Calculadora de materiais para concreto Blog: Agorandroid - sobre programação Android Twitter: @Agorandroid ___________ Campanha: Facilite sua vida e a dos outros usuários Netiqueta:Procure responder as sugestões. Quando encontrar a solução, coloque [Resolvido] no primeiro post o mais rápido possível. Lembre-se de agradecer às pessoas que ajudaram e poste a solução do problema.
|
| 08 Fev 2012, 20:57 |
|
 |
|
rafaelfm93
Anatomy of an App
Data de registro: 25 Out 2011, 14:53 Mensagens: 152
|
 Re: [Mini Tuto] AsyncTask e ProgressDialog - Ex02
AsyncTask executa UI Thread certo? 1- Se for na UI queria saber si tem como criar uma thread para rodar o AsyncTask e como ficaria. 2- Se não roda na thread UI, qual a vangem de fazer do modo do ex:01 (sendo q esse e bem mais claro e limpo) 3- Qual dos dois e mais rapido para processar?
Otimo post. Obrigado pela atenção!
_________________ Grato, Rafael
|
| 14 Fev 2012, 11:26 |
|
 |
|
A H Gusukuma
Dalvik Virtual Machine
Data de registro: 17 Jul 2011, 10:55 Mensagens: 1995 Localização: São Paulo
|
 Re: [Mini Tuto] AsyncTask e ProgressDialog - Ex02
A AsyncTask foi feita para facilitar a vida do desenvolvedor android Ela engloba as classes thread, handler e a interface runnable O método doInBackground executa em uma thread diferente da UI thread Os outros métodos são executados na UI thread, para poder alterar a tela O ex01 é para comparação, como é mais fácil fazer processamento em outra thread usando asyncTask A sugestão é usar a AsyncTask O tempo de proc deve ser muito próximo
_________________Abraços ___________ Novo App: CalcMat - Calculadora de materiais para concreto Blog: Agorandroid - sobre programação Android Twitter: @Agorandroid ___________ Campanha: Facilite sua vida e a dos outros usuários Netiqueta:Procure responder as sugestões. Quando encontrar a solução, coloque [Resolvido] no primeiro post o mais rápido possível. Lembre-se de agradecer às pessoas que ajudaram e poste a solução do problema.
|
| 14 Fev 2012, 13:33 |
|
 |
|
rafaelfm93
Anatomy of an App
Data de registro: 25 Out 2011, 14:53 Mensagens: 152
|
 Re: [Mini Tuto] AsyncTask e ProgressDialog - Ex02
Perfeito!
So esqueci de uma duvida:
Quando e indicado usar uma Async?Estou fazendo um programa relativamente grande com muitas ligações com o banco de dados buscando muitos dados por entrada ,sei que provavelmente vou ter q usar muitas Async para aliviar a UI, mas não sei quando usar.
Obrigado pela Atenção
_________________ Grato, Rafael
|
| 15 Fev 2012, 09:54 |
|
 |
|
antunes
Dalvik Virtual Machine
Data de registro: 05 Abr 2011, 03:47 Mensagens: 1846 Localização: Rio de Janeiro
|
 Re: [Mini Tuto] AsyncTask e ProgressDialog - Ex02
Use sempre que vc tiver uma tarefa pesada para colocar na UI, por exemplo códigos com complexidades O2, ou seja, um "for" dentro de um "for". Use sempre que o seu processo vá travar a tela do usuário!! Faça isso para minimizar a sensação de lentidão pelo usuário!! Só lembrando que a AsyncTask implementa um pool de threads e por default ela só permite 10 threads simultâneas. Tem formas de mudar esse limite!! Aqui explica: http://stackoverflow.com/questions/9909 ... va-androidMas depois dê uma olhada na documentação pra saber mais sobre o assunto. Abraços!
_________________Alexandre Antunes @a3b @bemobiMotorola Defy App: IpCalc : Source - Calculadora IP (Máscara, Gateway, Broadcast e Rede). APP: Guia Carioca - Guia para o turista que visita o Rio de Janeiro e para o carioca que quer conhecer mais sua cidade. App: MyPonto - Controle de frequência (ponto) pessoal. Campanha: Facilite sua vida e a dos outros usuários. Objetivo: Vamos colocar a tag [RESOLVIDO] no título do tópico quando o problema for resolvido.Use a ferramenta de busca do fórum e não espere tanto para que a sua dúvida seja respondida!Quer trabalhar comigo??
|
| 15 Fev 2012, 22:31 |
|
 |
|
rafaelfm93
Anatomy of an App
Data de registro: 25 Out 2011, 14:53 Mensagens: 152
|
 Re: [Mini Tuto] AsyncTask e ProgressDialog - Ex02
Opa, entendi, Muito obrigado! abrass
_________________ Grato, Rafael
|
| 16 Fev 2012, 08:57 |
|
|
|
Página 1 de 1
|
[ 6 Mensagens ] |
|
Quem está online |
Usuários vendo este fórum: adautox, ademir.carvalhojr, adilson.afl, alexandrepom, alexandreufcg, alsimoes, aluclinux, amarildolacerdas, andreluiz, andrewort, Arthas, azero, Biggs Darklighter, bigr ecreio, billsombrio, bravus, brenno, Cassius, Catapan, celson, Chanceler Supremo Finis Valorum, Chewbacca, criscmaia, cyzko, dariosena, dbispo, Deiapinh, dfreitas, DroidBot, edlinux, Eduardo, eferrari, fabielp, Felipe, fernandodotnet, flaviojps, geovanebg, Goncalves1, Gui Pereira, Guilherme, HAMSES, hebert, henrique.cardoso, hopper.frf, inesfg, jackstuard, jacquesbica, JAndroid, Javanês, jcorreajr, jhhm_2008, jijo, jlucasps, jmarcos14, Jorge Machin, Juninhooooo, JuniorE, juniorsk8, kristopher, Kureiton, laurj, Lelinho, Leonardo, Lincoln, lisbao, lucasB, lucianoedipo, luizcesar, luizcyber, luizfilipe, marcelosv, marcow, marinho5, Mayara Trevisol, Meticore, miguel, mlemos, MpassosT, Mvitor, nandokanarski, nishimura.ichigo, oliveiramc, Patrick, paulanegreiros, Paulo, paulosantos, phfmendes, piagg, Qui-Gon Jinn, rafsantos, Rainha Amidala/Padmé, ramonrabello, rbenatti, renatodondoni, rerp7, Ricardo Chikasawa, rodrigo_mg, rogeriopgomes, romuloff, ronamore, rosano, samuel.cavanieri, sandro, sephct, SERGIO RODRIGUES, skcratch, suportecr, Telekom [Bot], thiagoalgo, thiaguim, thosjanas, tiagocordeiro, Tognoli, Toks, tonylock, Topeca, vaniuz, VIEIRIX, Vinicius, viniciusluiz, Wenceslau, Wendel Carvalho, wender, xa:=zin, xikin, yeltsinlima, Yoda e 6 visitantes |
|
Você não pode criar novos tópicos neste fórum Você não pode responder tópicos neste fórum Você não pode editar suas mensagens neste fórum Você não pode excluir suas mensagens neste fórum Você não pode enviar anexos neste fórum
|
|