我有一个程序调用函数requestAudioBlocks来请求一些数据。在它中,它初始化一个数组,然后调用一个数据请求。Java Array/ArrayList替换已添加数据的内部数据将被添加
private ReadAudioData[] receivedAudioMessages;
private int receivedMessageCount;
private boolean requestAudioBlocks(long blocksPerRequest)
{
receivedAudioMessages = new ReadAudioData[2];
receivedMessageCount = 0;
connection.sendRequest(); //Send the command
}
当connection.sendRequest运行时,connection.sendRequest呼叫saveAudioBlocks,它发送一个可变下载要被放入数组。
private ReadAudioData audioDataPacket;
public void sendRequest()
{
ReadAudioData readAudioData;
while (int count = 0; count < 2; count++)
{
readAudioData = new ReadAudioData();
//Add the received information into the readAudioData variable
audioDataPacket = readAudioData;
saveAudioBlocks(audioDataPacket);
}
}
每收到一个新ReadAudioData对象时,saveAudioBlocks被调用。
public void saveAudioBlocks(ReadAudioData download)
{
receivedAudioMessages[receivedMessageCount] = download;
receivedMessageCount++;
}
在程序的运行情况,saveAudioBlocks被调用两次,应该将两个ReadAudioData对象到阵列receivedAudioMessages。
它的工作原理是第一次,作为正确ReadAudioData对象进入receivedAudioMessages [0]。
甲ReadAudioData对象具有可变字符串,在这种情况下是“111”。如果你把一个破发点中saveAudioBlocks在该行receivedMessageCount ++,你可以看看在阵列中,它包含字符串变量“111”的ReadAudioData对象,因为它应该在的位置。
然而,当saveAudioBlocks与新ReadAudioData对象再次呼吁,如果你在receivedAudioMessages看阵列在位置0时,ReadAudioData对象是包含在变量新ReadAudioData对象下载传递给函数,其中包含一个字符串变量“122”。
这几乎就好像我正在保存一个指向数组中的变量下载的指针,而不是当前的实际对象。
我也尝试过使用ArrayLists,但同样的问题发生。
我在saveAudioBlocks一个破发点,以确保它不会被调用替换的数据时,我不知道,这是不是。
任何人都可以帮忙吗?
检查saveAudioBlocks方法中receivedMessageCount的值,检查它是否再次设置为0? – Ankit 2012-07-30 09:19:22
@Ankit在第一个通话中肯定是0,第二个是1。但奇怪的是,在receivedAudioMessages [receivedMessageCount] =下载之前,Array中的值已更改;线甚至是第二次! – 2012-07-30 09:23:49
发布代码“你在哪里调用'saveAudioBlocks()'方法” – 2012-07-30 09:24:00