|
Página 1 de 1
|
[ 6 Mensagens ] |
|
Aguardar termino de uma AsyncTask [RESOLVIDO]
| Autor |
Mensagem |
|
darkducke
What is Android?
Data de registro: 27 Ago 2012, 11:00 Mensagens: 8
|
 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 |
|
 |
|
A H Gusukuma
Dalvik Virtual Machine
Data de registro: 17 Jul 2011, 10:55 Mensagens: 1995 Localização: São Paulo
|
 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 |
|
 |
|
darkducke
What is Android?
Data de registro: 27 Ago 2012, 11:00 Mensagens: 8
|
 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 |
|
 |
|
filipe_moraes
Anatomy of an App
Data de registro: 01 Jun 2012, 12:50 Mensagens: 166
|
 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: 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. 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.happydayfreeCaso 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 |
|
 |
|
rafaeldecker
Android Guru
Data de registro: 28 Jan 2011, 10:42 Mensagens: 722
|
 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 |
|
 |
|
darkducke
What is Android?
Data de registro: 27 Ago 2012, 11:00 Mensagens: 8
|
 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 |
|
|
|
Página 1 de 1
|
[ 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
|
|