如何从不同的处理程序中获取两个消息?

时间:2014-08-20 05:03:05

标签: android

这是两个处理程序:

Handler handler1 = new Handler() {
  @Override
  public void handleMessage(Message msg) {
    switch (msg.what) {
      case MESSAGE_A:
        break;
    }
  }
}

Handler handler2 = new Handler() {
  @Override
  public void handleMessage(Message msg) {
    switch (msg.what) {
      case MESSAGE_ONE:
        doSomethingOne();
        break;
      case MESSAGE_TWO:
        doSomethingTwo();
        break;
    }
  }
}

我可以保证MESSAGE_AMESSAGE_ONE(或MESSAGE_TWO)成对发送,但不知道哪一个是第一个。现在,我希望仅在处理doSomethingOne()MESSAGE_A时调用MESSAGE_ONE,仅在处理doSomethingTwo()MESSAGE_A时调用MESSAGE_TWO

例如,我收到MESSAGE_ONE,现在我需要等待MESSAGE_A,然后调用doSomethingOne()。

同样,我收到MESSAGE_A,现在我需要等待MESSAGE_TWO(或MESSAGE_ONE),然后调用doSomethingTwo()(或doSomethingOne)。

我该怎么办?

2 个答案:

答案 0 :(得分:0)

  1. 确保MESSAGE_A,MESSAGE_ONE和MESSAGE_TWO 不同
  2. 在处理程序类之外编写一个方法,例如handleMessageTogether(消息m)
  3. 在处理程序类的handleMessage()方法中,改为调用handleMessageTogether()方法。

答案 1 :(得分:0)

您可以从handler2致电handler1(当案例消息A时)。例如,您可以使用布尔值来发送消息messageonemessagetwo,然后在messageA完成后,调用handler2并查看哪个boolean是真。