2010-04-19 3 views
3

У меня проблема с обработкой сообщений в Thread. Мой вводный метод выглядит следующим образомThread loses Сообщение после wait() и 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(); 
     } 
    } 
} 

У меня есть несколько видов деятельности, отправка сообщений на эту тему, как это:

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); 

Проблема заключается в том, что вводный методе журналы «Идентификация из сообщения: нуль» хотя «идентификатор сообщения» имеет значение в логическом выражении. Почему сообщение «потеряет» данные при отправке в поток? Как это связано с уведомлением? Спасибо за вашу помощь

ответ

0

Так что я думаю, что я понял проблему. Это MessageQueu в сочетании с OnScrollListener, который я использовал в другом месте моего кода. OnScrollListener вызывался несколько раз, поэтому MessageQueu был заблокирован сообщениями этого слушателя.