回调中的Java数组数据损坏

回调中的Java数组数据损坏,java,Java,这个代码给了我一些问题。这只是接收通过TCP连接发送的数据的服务的线程部分。此数据是通过回调向活动馈送的映像(160x120x16bpp=38400字节) public void run(){ inetAddressServerAddr; link_respawn=0; 试一试{ serverAddr=InetAddress.getByName(视频服务器地址); }捕获(未知后异常e){ Log.e(getClass().getName(),e.getMessage()); e、 printS

这个代码给了我一些问题。这只是接收通过TCP连接发送的数据的服务的线程部分。此数据是通过回调向活动馈送的映像(160x120x16bpp=38400字节)

public void run(){
inetAddressServerAddr;
link_respawn=0;
试一试{
serverAddr=InetAddress.getByName(视频服务器地址);
}捕获(未知后异常e){
Log.e(getClass().getName(),e.getMessage());
e、 printStackTrace();
返回;
}
套接字=空;
数据输入流;
做{
坏帧=0;
帧=0;
状态=帧解码状态。空闲;
试一试{
套接字=新套接字(服务器地址、视频服务器端口);
stream=新的DataInputStream(新的BufferedInputStream(socket.getInputStream());
最终字节[]_数据=新字节[数据包大小];
最终字节[]图像数据=新字节[图像大小];
int _data _index=0;
同时(继续修剪){
if(stream.read(_data,0,_data.length)==0)
继续;
用于(字节_字节:_数据){
if(status==FrameDecodingStatus.Idle){
如果(_字节==SoF){
状态=FrameDecodingStatus.Data;
_数据_指数=0;
}
}else if((status==FrameDecodingStatus.Data)和(_Data\u index
接收回调的Android
活动
发现数组中的数据以一种非常奇怪的方式损坏。。i、 e.从某个索引开始,数组中的数据被设置为0。
如何避免这种情况?

read
不是
readFully
。Three arg
read
返回已读取的字节数,这对于所提供的数组的完整长度来说是不必要的

此代码删除
读取
返回值并处理整个数组

            if (stream.read(_data, 0, _data.length) == 0)
                continue;

            for (byte _byte : _data) {

我想我明白了
for
循环应该迭代从
流中实际读取的字节数。read
函数正确吗?或者使用
readFully()
当然,但在我的情况下,我更喜欢第一种方法。