Ver mensagens sem resposta | Ver tópicos ativos Hoje é 14 Dez 2019, 17:59



Responder Tópico  [ 1 Mensagem ] 
 [Mini Tuto] AsyncTask e ProgressDialog - Ex04 
Autor Mensagem
Google employee
Google employee

Data de registro: 17 Jul 2011, 11:55
Mensagens: 2657
Localização: São Paulo
Mensagem [Mini Tuto] AsyncTask e ProgressDialog - Ex04
Neste post vamos usar a AsyncTask para fazer o mesmo trabalho do Mini Tuto viewtopic.php?f=7&t=17462
Neste teste usamos todos os quatro métodos de uma AsyncTask:
1. No onPreExecute, atualizamos o ProgressDialog
2. No doInBackground, é onde fazemos todo o serviço. E como estamos em outra Thread, nos comunicamos com o ProgressDialog via o método publishProgress(total) enviando o contador para o método onProgressUpdate.
3. No onProgressUpdate, atualizamos o ProgressDialog.
4. No onPostExecute, fechamos o ProgressDialog e enviamos uma breve mensagem via toast.
Seguem os códigos!


package br.com.agorandroid.testeasynctask02;

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 TesteAsyncTask02Activity extends Activity {
    Button button;
    ProgressAsyncTask mAsyncTask;
    ProgressDialog progressDialog;
   
    /** 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() {
 
        progressDialog = new ProgressDialog(TesteAsyncTask02Activity.this);
        progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
        progressDialog.setMessage("Running...");
        progressDialog.setCancelable(false);
        progressDialog.show();
        
        mAsyncTask = new ProgressAsyncTask();
        mAsyncTask.execute();
               
    }

   
    private class ProgressAsyncTask extends AsyncTask<Void, Integer, Integer> {
        final static int STATE_DONE = 0;
        final static int STATE_RUNNING = 1;
        int mState;
        int total;
       
        protected void onPreExecute() {
            progressDialog.setProgress(0);
        }
   
        protected Integer doInBackground(Void...progress) {
            mState = STATE_RUNNING;
            total = 0;
            while (mState == STATE_RUNNING) {
                total++;
                publishProgress(total);

                if (total>=100) {
                    mState = STATE_DONE;
                }   
                try {
                    Thread.sleep(100);
                } catch (InterruptedException e) { }
            }   
            return total;
        }
 
        protected void onProgressUpdate(Integer... progress) {
            progressDialog.setProgress(progress[0]);
        }

        protected void onPostExecute(Integer result) {
            progressDialog.dismiss();
            Toast.makeText(TesteAsyncTask02Activity.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
Cuide do ciclo de vida do seu tópico:
no onCreate(): seja claro, se necessário poste o código e as mensagens de erro.
no onClick(): responda às sugestões.
no onStop(): evite "ninguém?", "alguém?", etc. Procure acrescentar alguma nova informação.
no onDestroy(): resolvido o assunto, poste imediatamente a solução, e, coloque no título do primeiro post [Resolvido].


10 Fev 2012, 22:36
Perfil
Mostrar mensagens anteriores:  Organizar por  
Responder Tópico   [ 1 Mensagem ] 

Quem está online

Usuários vendo este fórum: Adeja, ademilson, Alex Marcelo Burnett, andepunk, andreleitao, ariostorecco, axellsan, bernardodauer, BiG_SerGiO, bocajunior88, brenda, brenno, brunogh, capo, cariabs8, carminati, cavenaghi, Celso Jr., claudio, Cr-Informática, Crazy_Droid, culumin, d.paim, Damiani Oliveira, dariosena, David, developermaster, Dirceu W. C. Conte, dobau, Douglas Siviotti, drjunior, edson dias de gusmao, eliasmachado_rj, estratec, everaldo, EvertonLB, eXagon, Felipe, felipedornelas, FelipeOliveira, ffabiano, fgalvão, fracon, fraga, freina, Gabriel Teófilo, Geovanne Duarte, Google Android, gutomilani, heliopassos, hostdesigner, Ielo8, Igor_M, igor_meneguzzo, infonlinebr, ismaels, iuri_freire, ixian, jackdaniel, jhhm_2008, Jless@, jpespindola, jwv, kleberperea, lafamac, leofernandesmo, lhdiassilva, lillian.brandao, Lord, LucasNascimento, Lucious, luizcyber, maolveira, marcelocastellani, MarceloLuz, marcelosv, Marco Magoo, marcosandreao, marcow, marianatallas, Marlosm, MBetioli, Meticore, Mvitor, navegador, nightwatch, niloleite, nivea, nq6, onaiggac, otpor, paint-horse, Petto, pfsmorigo, pumadeejay, Rafael Felix, ramonrabello, ramonsa, ramonsiebra, rayberg, renan.fernandes, rfrafael, ricardo, ricardoogliari, ricdigital, rmendes, roberto caceres, robertofonte, rodrigosalfer, romualdo, Romulo, ronamore, rotilho, rtodao, rubens_olv, sandro, ScoobyGB, sidnei.gs, SidneiCP, sobrinho, Thitto, Tiago Sousa Roch, tiasousa, tnarnold, tonylock, tricx16, VIEIRIX, viniciusgoncalves, viniciusluiz, waideman, washington, Wesleyceraso, wil, wingdoido, woyzeck, wylken, xikin, yuri82 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

Procurar por:

© 2007 - 2016 Portal Android - Comunidade de Desenvolvedores Android

Estamos no Linkedin    Siga-nos no twitter


Powered by phpBB - Hospedado por Bemobi