Android 如何从不同的处理程序中同时获得两个msg?

Android 如何从不同的处理程序中同时获得两个msg?,android,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(

以下是两个处理程序:

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\u A
MESSAGE\u ONE
(或
MESSAGE\u TWO
)将成对发送,但不知道哪一个是第一个。现在我只想在handle
MESSAGE\u A
MESSAGE\u ONE
时调用
doSomethingTwo()
仅在handle
MESSAGE\u A
MESSAGE\u TWO
时调用
doSomethingTwo()

例如,我收到
MESSAGE\u ONE
,现在我需要等待
MESSAGE\u A
,然后调用dosomethingo()

类似地,我收到
消息A
,现在我需要等待
消息2
(或
消息1
),然后调用doSomethingTwo()(或
dosomethingo

我该怎么办

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

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

    您现在的输出是什么?对不起,我不明白。例如,消息“1”已发送,然后消息“A”,您的解决方案如何工作?
    MESSAGE\u A
    MESSAGE\u ONE
    (或
    MESSAGE\u TWO
    )以不确定的顺序出现,我认为您的解决方案无法解决我的问题。见我上面的例子。