我正在研究一個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