"Muito op metido a god" +1
Em 27 de fevereiro de 2015 13:05, LipHE Medeiros <f3liphe@gmail.com> escreveu:
boa iniciativa, eu já pensei muito em tentar alguma coisa mas... as pessoas que usam o serviço precisam mudar muito o pensamento. Muito lammer muito op metido a god etc xD
Em sábado, 14 de fevereiro de 2015 12:28:34 UTC-2, Matheus Henrique da Silva escreveu:Estou desenvolvendo uma especie de cliente IRC e estou apanhando para gerenciar todas as conversas, carrega-las cada uma em um fragment e atualiza-las corretamente. A mesma questão se aplica à lista de usuarios do canal que também é carregada num fragment mas a diferença é que este fica em um drawerlayout, escondido à direita.
Quando um fragment eh exibido (onActivityCreated()), ele chama a activity para acessar o service e buscar um objeto da classe Conversa que encapsula um array de objetos da classe Mensagem (no caso do fragment de users, eh a msm coisa mas ele carrega um array de objetos da classe User)Em virtude de o chat permanecer conectado tambem quando o aplicativo não esta em execução (apenas o service em background), eu preciso que esses arrays (Conversa's e Userlist) sejam mantidas e manuseadas no service. Porém, apos adicionar uma mensagem nova na Conversa ou atualizar a lista de usuarios, caso o conteudo que sofreu essa atualização esteja sendo exibido no fragment, o listview precisa ser atualizado, e eu não posso chamar essa atualização do service.
Já tentei enviar uma notificação via broadcast apos receber a mensagem, mas tive alguns problemas. Ultimamente eu estava chamando a UI thread do service para atualizar os dados e atualizar a listview:
// metodo no service
new Handler(Looper.getMainLooper()).post(new Runnable() {@Overridepublic void run() {try {userlist.updateUserList(finalUserList);} catch (CalledFromWrongThreadException e) {Crashlytics.logException(e);e.printStackTrace();}}});
// metodo na userlistpublic synchronized void updateUserList(ArrayList<User> lista)throws CalledFromWrongThreadException {this.lista = lista;
// mListener é a interface que o fragment implementa e é adicionada e removida no onResume() e onPause(),
// para saber quando o conteudo esta sendo exibido ou não. (Não sei se é o ideal a fazer)if (mListener != null) {mListener.notifyListview();}}
// metodo no fragmentpublic void notifyListview() {if (listview != null) {UserListAdapter adapter = (UserListAdapter) listview.getAdapter();if (adapter != null) {adapter.notifyDataSetChanged();}}}
No entando, recentemente ainda tenho recebido pelo crashlytics este erro:java.lang.IllegalStateException: The content of the adapter has changed but ListView did not receive a notification. Make sure the content of your adapter is not modified from a background thread, but only from the UI thread. [in ListView(2131099759, class android.widget.ListView) with Adapter(class com.example.irclient2.adapter.UserListAdapter)]at android.widget.ListView.layoutChildren(ListView.java:1527)at android.widget.AbsListView$CheckForTap.run(AbsListView.java:2180)at android.os.Handler.handleCallback(Handler.java:587)at android.os.Handler.dispatchMessage(Handler.java:92)at android.os.Looper.loop(Looper.java:130)at android.app.ActivityThread.main(ActivityThread.java:3687)at java.lang.reflect.Method.invokeNative(Method.java)at java.lang.reflect.Method.invoke(Method.java:507)at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:842)at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)at dalvik.system.NativeStart.main(NativeStart.java)O Asynctask me seria muito util se eu pudesse usa-lo o quanto quisesse e não apenas um por vez.Pensei em fazer o sistema de envio de mensagem exclusivamente com o Otto e ai interceptar onde achar melhor, mas não sei se seria uma boa aproximação também.
Qualquer ajuda será bem vinda. Desde ja, muito obrigado.--
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/d/optout.
Atenciosamente,
Rafael Sousa
Analista de Sistemas
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/d/optout.
0 comentários:
Postar um comentário