Toast.makeText只调用一次

时间:2016-09-15 00:15:59

标签: java android server client toast

我遇到了问题我无法解决。我正在尝试制作一个接收和发送消息的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的新手,我只是做了一些测试,但我只是失去了超过一小时的时间。

1 个答案:

答案 0 :(得分:0)

敬酒等到现有的祝酒词完成显示后才会出现。如果循环速度不断地循环makeTexting,积压将变得很长,以至于不同的消息可能需要很长时间才能显示出来。

我建议作为一个解决方案,检查是否有更新的消息,然后只显示,如果是,而不是每次都显示。

相关问题