安卓 : AsyncTask byte[] issue

标签 android android-asynctask

我正在使用 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/

相关文章:

java - 如何为横幅留出空间

java - 如何在 Android 中执行使用 fragment 正确更新 UI 的后台操作?

java - 安卓 : Wait for a background task to finish in main thread

java - 即使变量更新, while 循环也不会退出

android - 应用栏覆盖 fragment

android - 跨平台游戏开发

java - 如何使用 Android 应用程序从 servlet 重复获取数据

java - 使用 AsyncTask 避免 Android NetworkOnMainThreadException 的挑战

android - 如何从 C++ 代码请求 Android NDK 相机权限?

javascript - 无法解析模块 "events"React-Native