我在处理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中有一个值。为什么消息在发送到线程时会“丢失”它的数据?它与通知有关吗?谢谢你的帮助
答案 0 :(得分:0)
所以我想我找出了问题所在。 MessageQueu与我在代码的其他位置使用的OnScrollListener结合使用。 onScrollListener被多次调用,因此MessageQueu被来自此侦听器的消息阻止。