public class UsbRequest
extends Object
java.lang.Object | |
↳ | android.hardware.usb.UsbRequest |
表示USB请求包的类。 这可以用于读写数据到UsbDeviceConnection
或从UsbDeviceConnection
写入数据。 UsbRequests可用于在批量和中断端点上传输数据。 批量端点上的请求可以通过bulkTransfer(UsbEndpoint, byte[], int, int)
同步发送,也可以通过queue(ByteBuffer, int)
和requestWait()
异步发送。 中断端点上的请求只能异步发送和接收。
此类不支持端点0上的请求; 改为使用controlTransfer(int, int, int, int, byte[], int, int)
代替端点零请求。
Public constructors |
|
---|---|
UsbRequest() |
Public methods |
|
---|---|
boolean |
cancel() 取消待处理的队列操作。 |
void |
close() 释放与此请求相关的所有资源。 |
Object |
getClientData() 返回请求的客户端数据。 |
UsbEndpoint |
getEndpoint() 返回请求的端点,如果请求未打开,则返回null。 |
boolean |
initialize(UsbDeviceConnection connection, UsbEndpoint endpoint) 初始化请求,以便它可以读取或写入给定端点上的数据。 |
boolean |
queue(ByteBuffer buffer, int length) 将请求排队以在其端点上发送或接收数据。 |
void |
setClientData(Object data) 设置请求的客户端数据。 |
Protected methods |
|
---|---|
void |
finalize() 当垃圾收集确定没有更多对该对象的引用时,由对象上的垃圾回收器调用。 |
Inherited methods |
|
---|---|
From class java.lang.Object
|
boolean cancel ()
取消待处理的队列操作。
Returns | |
---|---|
boolean |
true if cancelling succeeded |
Object getClientData ()
返回请求的客户端数据。 这可以与setClientData(Object)
结合使用,将另一个对象与此请求关联起来,这对于维护queue(ByteBuffer, int)
和requestWait()
之间的通话状态非常有用
Returns | |
---|---|
Object |
the client data for the request |
UsbEndpoint getEndpoint ()
返回请求的端点,如果请求未打开,则返回null。
Returns | |
---|---|
UsbEndpoint |
the request's endpoint |
boolean initialize (UsbDeviceConnection connection, UsbEndpoint endpoint)
初始化请求,以便它可以读取或写入给定端点上的数据。 请求是否允许读取或写入取决于端点的方向。
Parameters | |
---|---|
connection |
UsbDeviceConnection
|
endpoint |
UsbEndpoint : the endpoint to be used for this request. |
Returns | |
---|---|
boolean |
true if the request was successfully opened. |
boolean queue (ByteBuffer buffer, int length)
将请求排队以在其端点上发送或接收数据。 对于OUT端点,给定的缓冲区数据将在端点上发送。 对于IN端点,端点将尝试将给定数量的字节读入指定的缓冲区。 如果排队操作成功,我们返回true,结果将通过requestWait()
返回
Parameters | |
---|---|
buffer |
ByteBuffer : the buffer containing the bytes to write, or location to store the results of a read |
length |
int : number of bytes to read or write |
Returns | |
---|---|
boolean |
true if the queueing operation succeeded |
void setClientData (Object data)
设置请求的客户端数据。 这可以与getClientData()
结合使用,以将另一个对象与此请求相关联,这对于维护对queue(ByteBuffer, int)
和requestWait()
调用之间的状态可能很有用
Parameters | |
---|---|
data |
Object : the client data for the request |
void finalize ()
当垃圾收集确定没有更多对该对象的引用时,由对象上的垃圾回收器调用。 子类会覆盖finalize
方法以处置系统资源或执行其他清理。
的常规协定finalize
是,它被调用,如果当在Java TM虚拟机已确定不再有由该目的可以通过还没有死亡,除了作为一个动作的结果的任何线程访问的任何手段取决于某些其他可以完成的对象或类别的最终定稿。 方法finalize
可以采取任何行动,包括使这个对象再次可用于其他线程; 然而, finalize
的通常目的是在对象被不可撤销地丢弃之前执行清理操作。 例如,表示输入/输出连接的对象的finalize方法可能会执行显式I / O事务,以在永久丢弃该对象之前中断连接。
类finalize
方法Object
执行特殊操作; 它只是正常返回。 Object
子类可能会覆盖此定义。
Java编程语言不保证哪个线程将为任何给定对象调用finalize
方法。 但是,保证调用finalize的线程在调用finalize时不会保留任何用户可见的同步锁。 如果finalize方法引发未捕获的异常,则忽略该异常,并终止该对象的终止。
在为一个对象调用了 finalize
方法之后,在Java虚拟机再次确定没有任何方法可以通过任何尚未死亡的线程访问此对象之前,不会采取进一步的操作,包括可能的操作通过准备完成的其他对象或类别,此时该对象可能被丢弃。
对于任何给定的对象,Java虚拟机从不会多次调用 finalize
方法。
finalize
方法抛出的任何异常 finalize
导致终止此对象的终止,但会被忽略。
Throws | |
---|---|
Throwable |