Fiquei interessado em como atualizar a UI por Receiver.
Agradeceria também se divulgasse Pedro!
--
Att,
-- Em 28 de fevereiro de 2013 11:21, Guilherme Gregores <gui.gregores@gmail.com> escreveu:
Então Pedro, se não for muito problema pra você eu ia gostar muito ^^.Em 28 de fevereiro de 2013 10:42, Pedro Subutzki <Pepeu> <falecompepeu@gmail.com> escreveu:
é tranquilo atualizar a UI através de um broadcast receiver.
Se quiser posso passar o esquema.Em 27 de fevereiro de 2013 18:05, Leonardo S <leonardo.s.comm@gmail.com> escreveu:
Guilherme,Por que vc não tenta atualizar a UI por broadcast receiver, que é a maneira mais recomendada ?
Dessa forma, evita problema de sincronismo entre a thread de AsyncTask e da UI.E pode conseguir isolar o problema.Em 27 de fevereiro de 2013 16:40, Bruno Albuquerque <bruno.albuquerque@gmail.com> escreveu:
Se você conseguir isolar o problema e criar um código de teste simples que reproduz o mesmo, eu dou uma olhada pra você.Em 27 de fevereiro de 2013 16:03, Guilherme Gregores <gui.gregores@gmail.com> escreveu:
Obrigado pela força Bruno, mas o problema continua.Coloquei Class.forName("android.os.AsyncTask"); no onCreate() da minha Activity, ele não da nem 1 problema, mas o erro ainda continua depois dele chamar o doInBackground Handler{40530e28} sending message to a Handler on a dead thread.Vi algo parecido com oque voce disse no stackoverflow mas o resultado foi o mesmo. Se voce tiver mas alguma ideia do motivo ou souber de um jeito + facil de rodar minha loadlistview estou aberto a sugestões .Em 26 de fevereiro de 2013 19:50, Bruno Albuquerque <bruno.albuquerque@gmail.com> escreveu:Você está batendo de frente com uma particularidade do AsyncTask. O seu código espera que ele seja inicializado na main thread mas isso não é garantido ocorrer. Como você está iniciando a sua app através de uma notificação, esse é exatamente seu problema.Existe um workaround bem simples. No seu onCreate(), adicione isso:Class.forName("android.os.AsyncTask");Isso vai forçar a inicialização dos inicializadores estáticos da sua AsyncTask na main thread e deve fazer tudo funcionar.Se quiser mais detalhes, é só dizer.-BrunoEm 26 de fevereiro de 2013 15:31, Guilherme Gregores <gui.gregores@gmail.com> escreveu:
Mudei aqui leonardo mas o problema continua =z, se souber de algum outro motivo para não estar funcionando me deixe informado valeu ^^.
Em 26 de fevereiro de 2013 14:54, Leonardo S <leonardo.s.comm@gmail.com> escreveu:
Cara ... não vi nada de errado em seu código então. Nunca tive esse problema.Costumo a usar no início super.onPostExecute(result);. Não sei se faz diferença.@Override protected void onPostExecute(String result) { super.onPostExecute(result); // resto
Em 26 de fevereiro de 2013 14:25, Guilherme Gregores <gui.gregores@gmail.com> escreveu:
Entao leonardo, quando o usuario recebe uma notificação de mensagem, se ela for clicada abre minha activity, onde tem uma lista que seria carregada pelo onPostExecute da AsyncTask, que é chamada no onCreate da activity.
Em 26 de fevereiro de 2013 12:11, Leonardo S <leonardo.s.comm@gmail.com> escreveu:Se a aplicação está fechada, não faz sentido esperar o onPostExecute, já que ele roda na UIThread.Use BroadcastReceiver e separa o download da atualização da UI.Em 25 de fevereiro de 2013 15:42, Guilherme Gregores <gui.gregores@gmail.com> escreveu:Então Lucio acho que acabei me expressando mal, a aplicação está fechada(o usuario acaba de ligar o celular ou o próprio android finaliza ele..etc), e quando uma mensagem é enviada para esse usuario, gera um notificação que abre a conversa só que não carrega a conversa salva no banco interno pois o OnPostExecute não é chamado.O estranho é que se a aplicação esta aberta a notificação funciona normalmente abrindo a conversa e carregando a conversa no banco.
2013/2/25 luciofm <luciofm@gmail.com>Isso acontece pois quando acontece um Force Close, seu aplicativo é encerrado, todo o processo é morto e nenhum código mais é executado.--Lúcio Maciel
luciofm@gmail.comOn Mon, Feb 25, 2013 at 2:20 PM, Guilherme Gregores <gui.gregores@gmail.com> wrote:
--Ola,Tenho um app que funciona como um especie de Chat onde eu uso uma AsyncTask para carregar a lista da conversa, que funciona normalmente.O meu problema na verdade é quando o aplicativo para por algum motivo (Force close, por exemplo).Caso uma mensagem seja recebida via GCM(onde é gerada uma notificação com um Intent para a Conversa, como qualquer Chat) após o Force close, o método OnPostExecute da AsyncTask não é chamado. Faço a chamada da Asynctask no onCreate, segue o código:protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ... ... try{ loadListTask = new LoadListTask(); loadListTask.execute(); }catch(Exception e){ Log.d(TAG,"ERRO: "+e.getMessage()); } }
public void loadListView() { messagesDb = useful.buscarMessagesDb(this); ArrayList<Message> messageListViews = new ArrayList<Message>(); int messagesDbSize = messagesDb.size(); for (int i = 0; i < messagesDbSize; i++) { if (((messagesDb.get(i).idFrom == myId) && (messagesDb.get(i).idTo == idContact)) || ((messagesDb.get(i).idFrom == idContact) && (messagesDb.get(i).idTo == myId))) { Message message = new Message(messagesDb.get(i).idFrom, messagesDb.get(i).idTo, messagesDb.get(i).dt, messagesDb.get(i).mensagem, messagesDb.get(i).confirm, messagesDb.get(i).idWeb); messageListViews.add(message); } else { //Log.d(TAG, "Essa mensagem não é pra esse contato!!!"); } } listChat.setAdapter(null); pref.edit().putBoolean("isUpdate", false).commit(); AdapterMessageListView adapterMessageListView = new AdapterMessageListView(myId, idContact, getApplicationContext(), messageListViews); listChat.setAdapter(adapterMessageListView); listChat.setCacheColorHint(Color.TRANSPARENT); listChat.setSelection(listChat.getCount()); }
private class LoadListTask extends AsyncTask<Void, Void, String> { @Override protected String doInBackground(Void... params) { try { Log.d(TAG,"doInBackground"); Thread.sleep(100); } catch (InterruptedException e) { } return "list"; } @Override public void onPreExecute() { Log.d(TAG,"PREEXECUTE"); } @Override protected void onPostExecute(String result) { Log.d(TAG,"PostExecute"); loadListView(); loadListTask = new LoadListTask(); loadListTask.execute(); super.onPostExecute(result); } }
Log:02-25 14:05:42.396: D/Chat(20663): Do in Background 02-25 14:05:42.396: W/MessageQueue(20663): Handler{40532ad8} sending message to a Handler on a dead thread 02-25 14:05:42.396: W/MessageQueue(20663): java.lang.RuntimeException: Handler{40532ad8} sending message to a Handler on a dead thread
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.
--
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.
--
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.
--
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.
--
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.
--
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.
--
Abraços,
Pedro Subutzki
__________________________________________HADI - Makes SQLite in Android easy and simple
https://github.com/PepeuCps/Hadi--
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.
Att,
Gabriel Augusto
013 97940055
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