3

我在处理线程中的消息时遇到问题。我的运行方法看起来像这样

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

问题是运行方法记录了“来自消息的 ID:null”,尽管“消息 ID”在日志语句中有一个值。为什么消息在发送到线程时会“丢失”它的数据?跟通知有关系吗?谢谢你的帮助

4

1 回答 1

0

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

于 2010-05-25T07:37:28.630 回答