线程在wait()和notify()之后丢失消息

时间:2010-04-19 09:49:31

标签: android multithreading message-queue handler

我在处理Thread中的消息时遇到问题。我的run-method看起来像这样

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

问题是run-method记录“id from message:null”虽然“message ID”在Log-statement中有一个值。为什么消息在发送到线程时会“丢失”它的数据?它与通知有关吗?谢谢你的帮助

1 个答案:

答案 0 :(得分:0)

所以我想我找出了问题所在。 MessageQueu与我在代码的其他位置使用的OnScrollListener结合使用。 onScrollListener被多次调用,因此MessageQueu被来自此侦听器的消息阻止。