如何清除Android中的字节缓冲区
问题描述:
我正在做一个应用程序,包括发送一个从android接收数据到微控制器的接收端,这是从微控制器到android我正在使用一个字节缓冲区存储数据。但是在这里我遇到了一个问题,我希望在不同阶段接收多个字节的数据,因为我想清除字节缓冲区并重新使用相同的字节缓冲区,任何人都可以告诉我如何清除字节缓冲区如何清除Android中的字节缓冲区
这是我的接收代码:
ByteBuffer buffer = ByteBuffer.allocate(64);
byte[] length = buffer.array();
byte[] Recevied_Data = new byte[64];
UsbRequest request = new UsbRequest();
while (true)
{
request.initialize(UsbDriver.USB_Device_Connection, UsbDriver.Data_In_End_Point);
request.queue(buffer, 64);
if (UsbDriver.USB_Device_Connection.requestWait() == request)
{
for(int i=0;i<length.length;i++)
{
Recevied_Data[i]=buffer.get(i);
if(Recevied_Data[0]==0x02 && Recevied_Data[1]==0x3B && Recevied_Data[2]==0x3B && Recevied_Data[3]==0x00 && Recevied_Data[4]==0x03){
Communication_Ok=true;
// **I want to clear the Buffer Here**
}
}
}
}
答
为什么要擦除数据?它是局部变量吗?如果它是局部变量,则它将被GC清除,否则(在成员变量的情况下)只将null分配给缓冲区。您可以通过将0(使用arraycopy)复制到bytebuffer来执行memset,但它将是无意义的代码。
,请尝试读取http://*.com/questions/8462200/examples-of-forcing-freeing-of-native-memory-direct-bytebuffer-has-allocated-us阿迈对您有所帮助。 –
你试过了吗:buffer.clear()? – TheTanic
但是在这里,我将字节缓冲区分配给Received_data [i]我没有使用那个家伙@TheTanic – dEePU