我正在使用套接字来实现即时消息。
我在客户端有以下Java代码:
while ( true )
checkInputStream();
这里的功能是:
private void checkInputStream() throws IOException
{
//prints once, but after the first input arrives, it prints infinitely
Log.i( "MY_TAG", "CHECKING INPUT STREAM");
String inputLine;
//inputStream is a BufferedReader object
while ((inputLine = inputStream.readLine()) != null)
{
//code
}
}
问题
我得到的行为是readline()
阻塞,直到它收到第一个输入(这太棒了)。但是一旦我发送它的第一个消息终止于换行符,它就会一遍又一遍地循环,无论我是否已经看到发送了更多的输入。
问题
这是正常行为吗?
如果是,如何在更多输入到达之前让readline()
阻止?
为什么我关心
我希望它能像第一次输入那样保持阻止的原因是因为我能够感觉到Android手机过热测试。
答案 0 :(得分:1)
如何在更多输入到达之前让readline()阻塞?
阻止,直到有更多输入到达。你的问题是你在两个嵌套循环中调用它,其中一个忽略了流的结束
删除外部while (true)
循环。您已经循环直到方法内部的流结束。如果你循环调用方法,你将在流的末尾永远旋转。
答案 1 :(得分:-1)
从代码中删除while(true)循环