我正在使用定义JunctionActor的外部程序包。这个想法是,JunctionActor可以通过称为sendMessage的方法将JSON消息发送到远程服务器,并通过调用onMessageReceived的侦听器接收消息。在我的实现中,设备接收它发送的每条消息,因此调用onMessageReceived。但是,在我的代码中,我在活动类中包含了一个ChatClient对象,该对象必须调用show_message方法。 show_message触发吐司。当我从onJoin调用show_message时,根本没有问题,但是当从onMessageReceived调用它时,什么也没有显示,而我的调试器告诉我该应用确实收到了一条消息,并且onMessageReceived被触发。同时,在onJoin方法中对show_message的调用实际上是有效的。而且我看不出两者之间有什么区别。
你有解决方案吗 ?

非常感谢

public class HelloWorldJunctionActivity extends Activity {
     onCreate(...){...} [...]
private class ChatClient extends JunctionActor {
      public ChatClient() {
        super("client");
      }
      public void onActivityJoin() {
          show_message("Connected");
      }
      @Override
      public void onMessageReceived(MessageHeader header, JSONObject msg) {
          try {
            show_message(msg.getString("text"));
        } catch (JSONException e) {
            // TODO Auto-generated catch block
            show_message(e.getMessage());
        }
      }
}
void show_message(String message) {
      Toast
        .makeText(HelloWorldJunctionActivity.this, message, Toast.LENGTH_SHORT)
        .show();
  }
}

最佳答案

我不确定JunctionActor的工作方式,但是是否可以从不是UI线程的线程调用onMessageReceived回调?
如果是这种情况,您可能必须使用处理程序,如this post中所述。

10-08 14:13