2013-07-24 80 views
4

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

当我做这样的事情:

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

    protected void onProgressUpdate() { 
    } 

    protected void onPostExecute() { 
    } 
} 

我得到一个错误说返回类型是异步任务的doInBackground功能不兼容。

+0

你为什么不接受答案的人给你?你有几个问题,但没有人接受答案,即使有些问题没有问题。 – gunar

回答

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() { 
    } 
}