Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android中的套接字读取速度慢_Java_Android_Sockets_Dalvik - Fatal编程技术网

Java Android中的套接字读取速度慢

Java Android中的套接字读取速度慢,java,android,sockets,dalvik,Java,Android,Sockets,Dalvik,我是Android编程新手,正在编写需要使用套接字编程的应用程序。我已经为套接字读取编写了代码。我正在阅读大约14MB的数据,下面是代码片段: dataInputStream = new DataInputStream(client.socket.getInputStream()); int totalRead = 0; while (totalRead < responseSize) { int bytesRead = dataInputStream.read(buffer

我是Android编程新手,正在编写需要使用套接字编程的应用程序。我已经为套接字读取编写了代码。我正在阅读大约14MB的数据,下面是代码片段:

dataInputStream = new DataInputStream(client.socket.getInputStream());
int totalRead = 0;
while (totalRead < responseSize) {
       int bytesRead = dataInputStream.read(buffer, totalRead, responseSize - totalRead);

       if (bytesRead < 0) {
         throw new IOException("Data stream ended prematurely");
       }
       totalRead += bytesRead;
}
dataInputStream=newdatainputstream(client.socket.getInputStream());
int totalRead=0;
while(totalRead
我尝试在JVM和Dalvik(Android设备)上运行相同的代码。我发现这两种方法在性能上有显著差异。在JVM中,读取数据大约需要17秒,而在Android上则需要40秒以上。请注意,我在这两个测试中使用相同的网络

我无法理解这些显著的性能差异。起初,我认为这是由于套接字读取代码造成的,我尝试了不同的读取方法,但仍然得到了相同的结果。在JVM上运行代码清楚地表明,这不是由于套接字读取代码造成的

你能帮我理解为什么我会看到这种显著的性能差异吗?我不知道如何解决这个问题


谢谢。

你应该使用a来提高阅读速度。或者,您可以使用read方法

扔掉这一切,然后使用
DataInputStream.readFully()。
它已经完成了您尝试执行的操作,但操作正确


至于它为什么慢,它不能比同级的书写速度快。

您好。不确定再次问同样的问题是否合适。不管怎样,安卓的版本是什么?如果是4.4,你可以试着用艺术来运行它。谷歌正在努力最终摆脱Dalvik。可能是