process - Android handler read UI/main thread data -


an activity has member arraylist. arraylist written activity , read its/activity handler. data read handler correct , wrong. because data written activity not synced when handler reading.

i noticed activity , handler in different process, handler created activity. handler called process.

how make arraylist data synced/consistent? thanks.

code in activity:

private vector<xmppconnectioninclientcallback> mcallbacklist = new vector<>();  public interface xmppconnectioninclientcallback {     void connected(int data);     void logined(int data);     void disconnected(string data); }  public void addcallback(xmppconnectioninclientcallback callback) {     log.e("connectionclient", "addone");     mcallbacklist.add(callback);     string stri = string.valueof(mcallbacklist.size());     log.e("connectionclient", stri); } 

handler in activity:

final messenger mmessenger = new messenger(new incominghandler());  class incominghandler extends handler {     @override     public void handlemessage(message msg) {         //synchronized(mcallbacklist) {         //get data message service process         int msgvalue = msg.what;         switch (msg.what) {             case xmppservice.e_connection_messenger_value:                 try {                     //callback here                     string stri = string.valueof(mcallbacklist.size());                     log.e("connectionclient size", stri);                     (int = 0; < mcallbacklist.size(); i++) {                         mcallbacklist.get(i).connected(msgvalue);                     }                 break; 

i called addcallback() first add 1 object mcallbacklist, after while service process send message handler. handler will read object mcallbacklist. mcallbacklist sometime has object, sometime not. notice handler running in service process. while addcallback() running in main process.

you can try use vector instead of arraylist. made "thread-safe" merit of methods being synchronized.


Comments