我正在使用 asyncTask 通过套接字将图像从 Android 发送到 PC。
我是这样调用它的
new SendImage().execute(data);
其中数据类型为byte[]
我的代码是
private class SendImage extends AsyncTask<byte[],Void, Void> {
@Override
protected Void doInBackground(byte[] ... data) {
try{
final DataOutputStream dataOutputStream;
final BufferedOutputStream out = new BufferedOutputStream(RRAWsecurity.socket.getOutputStream());
int count = data.length;
dataOutputStream = new DataOutputStream(RRAWsecurity.socket.getOutputStream());
dataOutputStream.writeInt(count);
dataOutputStream.flush();
out.write(data, 0, count);
out.flush();
}catch(Exception e)
{
e.printStackTrace();
}
return null;
}
}
问题出在这一行
out.write(data, 0, count);
错误说
The method write(byte[], int, int) in the type BufferedOutputStream is not applicable for the arguments (byte[][], int, int)
我不明白为什么它要求 2D
数组?
最佳答案
使用 data[0]
而不是 data
。 ...
符号只是给定类型数组的一些语法糖。所以 int...
实际上是一个整数数组,而您的 byte...
被视为 byte[] 数组的数组,所以它实际上是 byte[ ][]
.
关于安卓 : AsyncTask byte[] issue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16266093/