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

問題は、run-method が「id from message: null」をログに記録することですが、「メッセージ ID」にはログ ステートメントに値があります。メッセージがスレッドに送信されるときにデータが「失われる」のはなぜですか? 通知と何か関係がありますか?ご協力いただきありがとうございます

4

1 に答える 1

0

それで、私は問題を理解したと思います。それは、コードの別の場所で使用した OnScrollListener と組み合わせた MessageQueue でした。onScrollListener が複数回呼び出されたため、このリスナーからのメッセージで MessageQueue がブロックされました。

于 2010-05-25T07:37:28.630 に答える