我遇到了问题我无法解决。我正在尝试制作一个接收和发送消息的Android客户端(带有多线程,因此我不必等待发送消息的服务器,反之亦然)和为Windows编写的服务器几乎与Android客户端一样,接收和发送消息(这里也有多线程)。
final Thread t = new Thread(new Runnable() {
@Override
public void run() {
Looper.prepare();
try {
in_server = new BufferedReader(new InputStreamReader(client.getInputStream())); //receive from server
//Log.i("Message from server", in_server.readLine());
Toast.makeText(MainActivity.this, in_server.readLine(), Toast.LENGTH_SHORT).show();
} catch (IOException e) {
Toast.makeText(MainActivity.this, e.getMessage(), Toast.LENGTH_SHORT).show();
}
Looper.loop();
}
});
如果我写了一段时间(真实)而不是两个loopers并且我使用“Log.i”,我收到从服务器发送的所有消息,客户端和服务器完美地工作。但是,如果我删除“Log.i”并使用“Toast.makeText”并且我放了两个Loopers,就像上面的代码一样,我收到了我从服务器发送的第一条消息,其他消息都没有收到。我没有任何线索如何解决这个问题。
请不要粗鲁,我是Java的新手,我只是做了一些测试,但我只是失去了超过一小时的时间。
答案 0 :(得分:0)
敬酒等到现有的祝酒词完成显示后才会出现。如果循环速度不断地循环makeTexting,积压将变得很长,以至于不同的消息可能需要很长时间才能显示出来。
我建议作为一个解决方案,检查是否有更新的消息,然后只显示,如果是,而不是每次都显示。