Ver mensagens sem resposta | Ver tópicos ativos Hoje é 22 Mai 2013, 16:36



Este tópico está trancado, você não pode editar mensagens ou enviar respostas.  [ 6 Mensagens ] 
 Aguardar termino de uma AsyncTask [RESOLVIDO] 
Autor Mensagem
What is Android?
What is Android?

Data de registro: 27 Ago 2012, 11:00
Mensagens: 8
Mensagem Aguardar termino de uma AsyncTask [RESOLVIDO]
Olá pessoal, tenho uma função AsyncTask que obtem retorno de um WebService,
o que preciso é depois de executar essa função, aguardar o fim para obter a resposta
e só assim continuar o procedimento, ex:

Public void Principal()
{
  ... alguns procedimentos inicio...

       pdiws ws = new pdiws();
       ws.execute(new String[] {"parametro"}); // <-- aguardar o fim para continuar a executar daqui para baixo

  ... outros procedimentos fim...
}
 


private class pdiws extends AsyncTask<String, Void, String> {
....
}


após o ws.execute eu preciso aguardar o fim, a resposta em onPostExecute
antes de continuar nos "... outros procedimentos fim ..."


Obrigado!


Editado pela última vez por darkducke em 29 Ago 2012, 11:47, num total de 1 vezes



27 Ago 2012, 19:44
Perfil
Dalvik Virtual Machine
Dalvik Virtual Machine

Data de registro: 17 Jul 2011, 10:55
Mensagens: 1995
Localização: São Paulo
Mensagem Re: Aguardar termino de uma AsyncTask
Olá
O melhor é não aguardar o fim da asyncTask, pois vai bloquear a UI thread
Coloca um método no onPostExecute e coloca o resto dos procedimentos nesse método.

_________________
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.


27 Ago 2012, 20:15
Perfil
What is Android?
What is Android?

Data de registro: 27 Ago 2012, 11:00
Mensagens: 8
Mensagem Re: Aguardar termino de uma AsyncTask
Olá Gusukuma, estava lendo sobre isso neste exato momento, vo explica a situação, tenho a mainactivity onde tenho uma tela de login...
criei uma classe wsgeral.java onde tem a função AsyncTask que consome o WebService, eu utilizo a mesma função para vários tipos de consulta
trocando somente os parametros de entrada, como faço para ter acesso a mainactivity no evento onPostExecute onde já tenho o retorno do xml do webserivice,
por exemplo escrever em um TextView que está na mainactivity, ou chamar alguma função da mainactivity? não consegui fazer isso, também poderia enviar o retorno da AsyncTask
na função que eu a chamo, mais pra isso teria que aguardar como falei acima, entendeu?

Obrigado novamente!


27 Ago 2012, 20:22
Perfil
Anatomy of an App
Anatomy of an App

Data de registro: 01 Jun 2012, 12:50
Mensagens: 166
Mensagem Re: Aguardar termino de uma AsyncTask
Olá, faz o seguinte.
Coloca a sua classe asyncTask dentro da mainactivity, claro, se usa-la somente nessa activity, caso contrario não será boa prática.
Crie uma variável publica, assim:

public TextView TV;
 


Na sua mainactivity, no lugar de criar o textview assim:

TextView TV = new TextView(this);
 


Você faz assim, fazendo referencia a variável pública.

TV = new TextView(this);
 


Na calsse asyncTask, no método "onPostExecute", imagina que você quer alterar o texto do objecto TextView "TV", faça o seguinte:

TV.setText("MUDOU O TEXTO");
 


Caso você use a classe asyncTask em outras activities, passe como parâmetro o contexto e o objecto, assim consegues atualiza-lo na sua classe.

Espero ter ajudado.

_________________
Happy Day - Nunca mais se esqueça das datas especiais, envia sms automaticamente no dia da comemoração!
https://play.google.com/store/apps/details?id=br.com.happydayfree

Caso tenha encontrado sua solução, coloque como [RESOLVIDO] para facilitar a dúvida de outros.
http://www.portalandroid.org- Tudo sobre o Android.

JESUS VOLTARÁ! Não sabe quem é? Procure, ainda há tempo.


28 Ago 2012, 19:26
Perfil
Android Guru
Android Guru

Data de registro: 28 Jan 2011, 10:42
Mensagens: 722
Mensagem Re: Aguardar termino de uma AsyncTask
Usa interfaces para isso...

Cria uma interface qualquer...

tua classe assynk...

import java.net.URL;
import android.os.AsyncTask;

public class HttpConnection {

    private AssynkConnection connection;

    private OnRequestEnd onRequestEndListener = null;


    public HttpConnection(OnRequestEnd onRequestEndListener) {
        this.onRequestEndListener = onRequestEndListener;
        connection = new AssynkConnection();
        connection.execute();
    }

    private class AssynkConnection extends AsyncTask<URL, Integer, Long> {
        protected Long doInBackground(URL... urls) {
            // faz o que tu quiseres aqui
            return null;
        }

        protected void onPostExecute(Long result) {
            if (onRequestEndListener != null) {
                onRequestEndListener.onRequestEnd(true);
            }
        }
    }

    public interface OnRequestEnd {
        public void onRequestEnd(boolean isSuccess);
    }

    public interface DoInBackground {
        public void doInBackground();
    }

}
 


chamando isto:


HttpConnection c = new HttpConnection(new HttpConnection.OnRequestEnd() {

            @Override
            public void onRequestEnd(boolean isSuccess) {
                                  // TRATAMENTO DA RESPOSTA DA REQUEST
}
});
 


29 Ago 2012, 10:24
Perfil
What is Android?
What is Android?

Data de registro: 27 Ago 2012, 11:00
Mensagens: 8
Mensagem Re: Aguardar termino de uma AsyncTask [RESOLVIDO]
Bom pessoal, estou fazendo isso no onPostExecute, consegui acessar os metodos na mainactivity e assim resolveu o problema!


29 Ago 2012, 11:46
Perfil
Mostrar mensagens anteriores:  Organizar por  
Este tópico está trancado, você não pode editar mensagens ou enviar respostas.   [ 6 Mensagens ] 

Quem está online

Usuários vendo este fórum: (_FM_), adautox, Adeja, adenilsonsena, alansousa, alexandre, americano, andre.hebeler, andrelom, andreluiz, arnaldo.miranda, augustomig, Avelino Mateus Neto, azero, bbourbon, berchielli, brpiassa, brunomalka, BrunoO, burujo, C-3PO, caciara, canaville, car.demarco, Carlos Alexandre, Carmizini, cesao, chevasrealm, cleber, Cr-Informática, cyzko, DAVINCE, Delão, Diego Otani, dkclan, dmd, dobau, Douglas Siviotti, edlinux, Eduardo - Brasil, emersonalencar, EvertonLB, fabricioLeonard, felipe.buarque, fernando neves, ffabiano, fmakula, frances135, Francisco_Geraldo, garretereis, geco, Guilherme, guilhermesmo, GuilhermeZampieri, gutomilani, icarodavi, ismavolk, jackstuard, jairo, jcorreajr, jhonguitar, Jless@, jpespindola, jrsilva, JRSIQUEIRA, juliancesar, juliano, juniorfranca, jwv, jzaires, klassmann, leandroviana, Lelinho, leo, lucasmadeira, luciano.sml, luciocamilo, madeinnordeste, malucouto, marianatallas, Marlosm, mateusff, MauNunes, maurosilva, maximilianjx, mayahaslinger, Mayron Cimardi, Meticore, mmiottobarbosa, monteirojp, mtomazzi, niloleite, nina.rm, nino, nirvana, nsansilva, Nute Gunray, oliverlessa, Paulo, pedro, peterson.bah, pgsnit, Philipe Alves, phpower1, phsantos, piantino, pilon, r.wil, raragao, rdchaves, Ricardo Chikasawa, rodrigo aguiar, rodrigo_mg, rogerio.alcantara, romulotales, rsl_master, samuel.cavanieri, SEO Crawler, sergio, SERGIO RODRIGUES, Shmi Skywalker, tChAnDy, Thitto, Transtago, unnamedd, vilmartr, Vinicius, viniciusluiz, xa:=zin, yeltsinlima, Yoshihury, yuri82, Zam Wesell, zeantonio, zenden1503, zorieuq e 8 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