Ver mensagens sem resposta | Ver tópicos ativos Hoje é 24 Mai 2013, 18:40



Responder Tópico  [ 6 Mensagens ] 
 [Mini Tuto] AsyncTask e ProgressDialog - Ex02 
Autor Mensagem
Dalvik Virtual Machine
Dalvik Virtual Machine

Data de registro: 17 Jul 2011, 10:55
Mensagens: 1997
Localização: São Paulo
Mensagem [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
Perfil
Anatomy of an App
Anatomy of an App

Data de registro: 25 Out 2011, 14:53
Mensagens: 152
Mensagem 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
Perfil
Dalvik Virtual Machine
Dalvik Virtual Machine

Data de registro: 17 Jul 2011, 10:55
Mensagens: 1997
Localização: São Paulo
Mensagem 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
Perfil
Anatomy of an App
Anatomy of an App

Data de registro: 25 Out 2011, 14:53
Mensagens: 152
Mensagem 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
Perfil
Dalvik Virtual Machine
Dalvik Virtual Machine
Avatar de usuário

Data de registro: 05 Abr 2011, 03:47
Mensagens: 1846
Localização: Rio de Janeiro
Mensagem 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-android

Mas depois dê uma olhada na documentação pra saber mais sobre o assunto.

Abraços!

_________________
Alexandre Antunes
@a3b @bemobi
Motorola 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
Perfil WWW
Anatomy of an App
Anatomy of an App

Data de registro: 25 Out 2011, 14:53
Mensagens: 152
Mensagem Re: [Mini Tuto] AsyncTask e ProgressDialog - Ex02
Opa, entendi, Muito obrigado!
abrass

_________________
Grato,
Rafael


16 Fev 2012, 08:57
Perfil
Mostrar mensagens anteriores:  Organizar por  
Responder Tópico   [ 6 Mensagens ] 

Quem está online

Usuários vendo este fórum: Adeja, ademir.carvalhojr, alexandrepom, allart, allone, andrewort, Androidthebest, apoena, Arthas, bernardodauer, BMaia, canaville, capo, Cassius, Corneta, cosmotheoro, Costa, criscmaia, dentimskol, du_sr, e-azuos, eduzortea, fcoroa, Fernando Cardia, fernandofsf, ffardo, fgalvão, Flavio, fracon, francismarconcini, gabrielpg, geeks, germanno, glmsistemas, grandebaro, guilhermesmo, gustavobarbosa, humberto, IgorBrum, jacksaum, jacksonst, jaydson, jhou, Joessi2007, jpespindola, juliana_costa, kecyobarros, kidush, klebersilvarocha, Knut, laucode, lillian.brandao, linukiss, loferreira, luizcesar, madeinnordeste, marcos_trb, marcow, Matheus562, mlemos, msmdark, nandokanarski, navegador, neimarguerra, NeruLL, neviim, Nice, Nidio Dolfini, nocivus, o-raposa, otpor, pedro, peixe, pererinha, polonia, rafaelmonoh, renata, ricardzanella, romuloigor, rubens_olv, sandro, Shmi Skywalker, snonca, soulmachine, taluna, talves, Thelemita, thiagotomais, thiaguim, ThiMatsu, Tiago Sousa Roch, tiagocordeiro, Transtago, vandob, viniciusgoncalves, washington, Webnet, Wenceslau, Wendel Carvalho, wesley.messias, weverton, wilson.slima, YaCy, yuri82 e 3 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

Procurar por:

© 2007 - 2013 Portal Android - Comunidade de Desenvolvedores da Plataforma Android

Estamos no Linkedin    Siga-nos no twitter


Powered by phpBB - Hospedado por Bemobi