我正在使用定义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中所述。