我想从相机表面预览中捕获帧缓冲区,并将这些缓冲区发送到另一个函数,以便在Web上某处处理/张贴。如何正确使用AsyncTask
Android开发人员指南给出了这样的例子: http://developer.android.com/reference/android/os/AsyncTask.html
private class DownloadFilesTask extends AsyncTask<URL, Integer, Long> {
protected Long doInBackground(URL... urls) {
int count = urls.length;
long totalSize = 0;
for (int i = 0; i < count; i++) {
totalSize += Downloader.downloadFile(urls[i]);
publishProgress((int) ((i/(float) count) * 100));
}
return totalSize;
}
protected void onProgressUpdate(Integer... progress) {
setProgressPercent(progress[0]);
}
protected void onPostExecute(Long result) {
showDialog("Downloaded " + result + " bytes");
}
}
这里是你如何执行它:
new DownloadFilesTask().execute(url1, url2, url3);
这是整个操作一个大的AsyncTask(换句话说,是循环会坐在那里等待每个文件同步下载),而整个任务在后台工作,或者这是否会为每个传递的URL启动多个线程?
与我的项目相关,每次我想捕获一个帧缓冲区时,简单地创建一个全新的AsyncTask是否合理?沿线的东西:
//for each frame buffer i want to process:
new FrameProcessorTask().execute(byte[]);
这些帧将被分开 - 处理将其简单地转换为ARGB位图 - 我希望这个间距可以减少遇到这个问题的机会。在下一个开始之前,每个线程都可能完成[至少处理,如果没有上传]。 – 2011-02-28 08:47:18