Как правильно использовать AsyncTask

Я хочу захватить буфер кадра из предварительного просмотра поверхности камеры и отправить эти буферы другой функции, которая будет обрабатываться / POSTed где-то в Интернете.

В руководстве Android Dev приведено следующее: 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[]); 

Это один поток, который перебирает данные.

Вы тоже можете это сделать.

При использовании второго варианта вам необходимо учитывать размер кучи, так как у телефона только ограниченный объем памяти и много параллельных потоков, все загрузки в больших буферах могут превышать доступную память.

Это будет один поток, взятый из пула управляемых потоков. doInBackground аргумента – это просто вход в метод doInBackground . Как видно из примера, нитки не появляются там. Если вы хотите использовать один поток для каждого URL-адреса, вам нужно будет создать новую AsyncTask для каждого из них.

Intereting Posts
Сотовые панели действий и поля Вызвано: java.lang.IllegalStateException: startRecording () вызвано неинициализированным аудиорекордом Правильный шаблон для регистрации приемника? Как скрыть панель уведомлений, но разрешить перетаскивание сверху? Добавить зависимость от конкретного продуктаFlavor и buildType в градиенте Как включить applicationId в вызове командной строки из зависимости build.gradle? Запись файлов в / system Android WebView getElementById ('math') не работает Динамически Обработка исключений Добавление естественного эффекта перетаскивания в ImageView так же, как и чат-чаты Facebook Messenger с использованием библиотеки Rebound Предварительный просмотр Android Studio: этот JVM не поддерживает постоянный тег 15 Кто-нибудь получил пример доступа Android от Delphi к классу USB? Настроить Android Intent.ACTION_SEND Необходимо захватить каждый http, отправленный / полученный от приложения Android на устройстве Запуск WebView в фоновом режиме