2010-04-19 14 views
3

J'ai un problème de gestion des messages dans un thread. Ma méthode courir ressemble à ceThread perd Message après wait() et notify()

public void run() {   
    Looper.prepareLooper(); 
    parserHandler = new Handler { 
     public void handleMessage(Message msg) { 
     Log.i("","id from message: "+msg.getData.getString("id")); 
     // handle message 
     this.wait(); 
     } 
    } 
} 

J'ai plusieurs activités d'envoyer des messages à ce fil, comme celui-ci:

Message parserMessage = new Message(); 
Bundle data = new Bundle(); 
data.putString("id", realId); 
data.putString("callingClass", "CategoryList"); 
parserMessage.setData(data); 
parserMessage.what = PARSE_CATEGORIES_OR_PRODUCTS; 

parserHandler = parser.getParserHandler(); 

synchronized (parserHandler) { 
    parserHandler.notify(); 
    Log.i("","message ID: " + parserMessage.getData().getString("id")); 
} 

parserHandler.sendMessage(parserMessage); 

Le problème est que les journaux-méthode run « id de messages: null » bien que "ID de message" ait une valeur dans l'instruction Log. Pourquoi le message "perd" ses données lors de l'envoi au thread? A-t-il quelque chose à voir avec le notifier? Merci pour votre aide

Répondre

0

Donc je pense que j'ai compris le problème. C'était le MessageQueu en combinaison avec un OnScrollListener que j'ai utilisé dans un autre emplacement de mon code. Le onScrollListener a été appelé plusieurs fois et le MessageQueu a été bloqué avec des messages de cet écouteur.