【发布时间】:2011-04-30 20:51:47
【问题描述】:
我想从相机表面预览中捕获帧缓冲区并将这些缓冲区发送到另一个函数以在网络上的某个位置进行处理/发布。
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[]);
【问题讨论】:
标签: android multithreading android-asynctask