2010-04-19 64 views
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:空」儘管「消息ID」在Log語句中有一個值。爲什麼消息在發送到線程時會「丟失」它的數據?它與通知有關嗎?感謝您的幫助

回答

0

所以我想我找出了問題所在。 MessageQueu與我在代碼的其他位置使用的OnScrollListener結合使用。 onScrollListener被多次調用,因此MessageQueu被來自此偵聽器的消息阻塞。