如何清除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**   


       } 
      } 

      } 
     } 
+0

,请尝试读取http://*.com/questions/8462200/examples-of-forcing-freeing-of-native-memory-direct-bytebuffer-has-allocated-us阿迈对您有所帮助。 –

+0

你试过了吗:buffer.clear()? – TheTanic

+0

但是在这里,我将字节缓冲区分配给Received_data [i]我没有使用那个家伙@TheTanic – dEePU

This might be enough. 但如果你婉t完全删除数据,你可以Look here,虽然它很脏,但简单易读。

为什么要擦除数据?它是局部变量吗?如果它是局部变量,则它将被GC清除,否则(在成员变量的情况下)只将null分配给缓冲区。您可以通过将0(使用arraycopy)复制到bytebuffer来执行memset,但它将是无意义的代码。