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

3

我在处理线程消息时遇到了问题。我的run方法如下所示:

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方法记录了“消息ID为null”,尽管在日志语句中“消息ID”有一个值。当消息被发送到线程时,为什么会“丢失”其数据?这是否与notify有关?谢谢您的帮助。
1个回答

0

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接