4

如何将 byte[] 类型的参数传递给 AsynTask 类的 doInBackground 函数?

当我做这样的事情时:

private class Banana extends AsyncTask<byte[], Void, Void> {
    protected void doInBackground(byte[]... data) {
        mCamera.addCallbackBuffer(byte[] data);
    }

    protected void onProgressUpdate() {
    }

    protected void onPostExecute() {
    }
}

我收到一条错误消息,指出返回类型与 doInBackground 函数的异步任务不兼容。

4

1 回答 1

4

doInBackground实际上需要一个数组array[]。所以你可以使用:

private class Banana extends AsyncTask<byte[], Void, Void> {
        protected Void doInBackground(byte[]... data) {
            mCamera.addCallbackBuffer(data[0]);
            return null;
        }

        protected void onProgressUpdate() {
        }

        protected void onPostExecute() {
        }
    }

或者您可以将该数组作为类构造函数参数发送:

private class Banana extends AsyncTask<Void, Void, Void> {
    private byte[] data;
    public Banana(byte[] data) {
        this.data = data;
    }
    protected Void doInBackground(Void... data) {
        mCamera.addCallbackBuffer(this.data);
        return null;
    }

    protected void onProgressUpdate() {
    }

    protected void onPostExecute() {
    }
}
于 2013-07-24T13:33:06.333 回答