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

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函数中返回的类型与Async Task不兼容。

为什么你不接受别人给你的答案呢?你有几个问题都没有采纳答案,尽管其中一些是可以的。 - gunar
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() {
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接