Eu coloquei pra chamar a sincronizacao na segunda activity, no oncreate.
Coloquei um breakpoint no metodo que salva no banco (que eh chamado pelo SincronizacaoTask).
No meu noob entendimento por ser outra thread mesmo a aplicacao parada no break point deveria-se carregar a tela da activity de lancamentos(activity que chamou a SincronizacaoTask), ela so carrega depois que eu libero o break point, por ser outra thread nao deveria carregar a tela independente do break point?
2013/10/7 Douglas Drumond <drumond.douglas@gmail.com>
Ah, se você vai p/ outra activity, você perde o contexto da antiga. No seu caso, como você está usando duas Tasks, pode deixar a SincronizacaoTask na segunda activity e passar parâmetros p/ activity. Ou coloca tudo num service e quando terminar de baixar, chama a segunda activity. O serviço continua rodando e se finaliza quando acabar de salvar no banco.Outra coisa, publishProgress é para fazer algo na UI enquanto a Task ainda está sendo executada em background, se você já está no onPostExecute não há necessidade disso, já está na thread de UI.2013/10/6 Paulo Henrique Peres <paulohenriquepo@gmail.com>No meu caso essa "Atualizacado da UI pro usuario" eh uma nova activity,sai da pagina de login e vai pra pagina de lancamentos, talvez isso esteja influenciando. SEgue o codigo:
public class UserLoginTask extends AsyncTask<Void, Void, Boolean> {@Overrideprotected Boolean doInBackground(Void... params) {//chama metodo para realizar login indo ao webservice}@Overrideprotected void onPostExecute(final Boolean success) {if (success) {publishProgress();//realizar a sincronizacaoSincronizacaoTask sincronizacaoTask = new SincronizacaoTask(uuidlconta);sincronizacaoTask.execute((Void)null);}}protected void onProgressUpdate() {//Atualizar a UI no entanto eh uma nota activityIntent intent = new Intent(getApplicationContext(), LancamentosActivity.class);intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);startActivity(intent);}}--2013/10/6 Douglas Drumond <drumond.douglas@gmail.com>
Naquele código que enviei, o download é feito em background e não tem nada na tela. Somente após o download algo é exibido. A sequência é:download em background – nada na tela, mas a thread de UI não fica bloqueada, se tiver algo, dá p interagirfim do download – atualiza a UIsalva no banco em background – o que está na tela é interativo.Provavelmente seu fluxo é outro e não ficou claro no e-mail resumido.2013/10/5 Paulo Henrique Peres <paulohenriquepo@gmail.com>Nao deu certo nao.O que eu preciso na verdade eh buscar uns dados do webservice e salvar no banco de dados do device apos a pessoa fazer login.Esses dados serao usados para usar uma parte da aplicacao qdo estiver off-line.No entanto quero que seja possivel o usuario utilizar a aplicacao enquanto eh realizada a sincronizacao.Eu dei uma olhada na classe AbstractThreadedSyncAdapter, mas pelo que entendi ela eh pra ser utilizada como um servico se nao me engano.Acho que nao serve no meu caso.--2013/10/4 Douglas Drumond <drumond.douglas@gmail.com>
Você baixa na mesma AsyncTask que salva no banco? Até pode ser, mas precisa fazer um publishUpdate no meio.Vai ficar mais ou menos assim na sua Async:class SincronizacaoTask extends AsyncTask <Void, String[], String[]> {protected String[] doInBackground(Void… params) {download das coisas
String[] retornoParaUsuario = new String[]{status, mensagem.toString()};publishProgress(retornoParaUsuario);salva no bancoreturn retornoParaUsuario;}
protected void onProgressUpdate(String[]… progressArray) {atualiza a tela com status e mensagem do progressArray[0][0] (status) e progressArray[0][1] (mensagem.toString())}}Desse jeito você exibe algo na tela depois do download, mas antes de salvar no banco.--2013/10/4 Paulo Henrique Peres <paulohenriquepo@gmail.com>--To fazendo uma app que faz uma requisicao em um webservice,com a resposta do web service parte dos dados serao exibidos ao usuarioe outra parte sera inserida no banco local do device.Esses dados que serao inseridos no banco local eu coloquei dentro de uma AsyncTask na esperanca de que a aplicacao mostraria a resposta ao usuarioe ficaria no fundo salvando esses dados.No entanto nao foi esse o comportamento, a resposta so chega ao usuario (atualiza a tela) depois que termina de rodar a AsyncTask.Segue parte do codigo
//busca os dados aquitry{
SincronizacaoTask sincronizacaoTask = new SincronizacaoTask(uuidlconta);
sincronizacaoTask.execute((Void)null);
}catch(Exception e){
Log.e("bbb", "I got an error", e);
}
//Retorno do metodo com a resposta do usuarioreturn new String[]{status, mensagem.toString()};
Como faco pro comportamento ser da dorma como descrevi acima?
--
Paulo Henrique Peres
Oracle Certified Professional, Java ProgrammerOracle Certified Professional, Web Component Developer
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
--
Paulo Henrique Peres
Oracle Certified Professional, Java ProgrammerOracle Certified Professional, Web Component Developer
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
--
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
--
Paulo Henrique Peres
Oracle Certified Professional, Java ProgrammerOracle Certified Professional, Web Component Developer
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
--
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
Paulo Henrique Peres
Oracle Certified Professional, Java Programmer
Oracle Certified Professional, Web Component Developer
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.






0 comentários:
Postar um comentário