我正在研究一个Android应用程序,需要与服务器(在我的电脑上运行)进行通信,这也是我写的。 问题是InputStream.read()需要一个永恒,处理200kb大约需要30秒。也许垃圾收集涉及某种方式,在我的循环过程中,它不时被调用,但列出的延迟只有2或3毫秒,总共可能是20毫秒,所以我不认为这是问题所在。Android InputStream.read()极其缓慢
我的代码:
client = new Socket("192.168.1.1", 1235);
client.setTcpNoDelay(true);
client.setReceiveBufferSize(1048576);
InputStream is = client.getInputStream();
byte[] buffer = new byte[1048576];
int i = 0;
int length = -1;
while (true)
{
int b = is.read();
if (b == -1)
{
success = false;
break;
}
buffer[i] = (byte) b;
if (i == length)
break;
if (i == 3)
{
length = buffer[0] | buffer[1] << 8 | buffer[2] << 16 | buffer[3] << 24;
}
i++;
}
我没有真正经历Java和Android中的编程总初学者,所以我不知道为什么它是那该死的缓慢。
建议:如果您想在Android中创建服务器端客户端应用程序,我强烈建议您检查一下将为您进行通信的[middleware](http://en.wikipedia.org/wiki/Middleware)例如[Apache Thrift](http://thrift.apache.org/)。 – m0skit0