Cómo utilizar AsyncTask correctamente

Quiero capturar un búfer del marco de una vista previa de la superficie de la cámara y enviar esos almacenadores intermediarios a otra función para ser procesada / POSTed en alguna parte en la tela.

La guía de Android Dev da este ejemplo: 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"); } } 

Así es como lo ejecutas:

 new DownloadFilesTask().execute(url1, url2, url3); 

¿Es toda esta operación un AsyncTask grande (en otras palabras, es que el bucle va a sentarse allí y esperar a que cada archivo se descargue de forma síncrona) mientras que toda la tarea funciona en segundo plano, o esto va a iniciar múltiples subprocesos para cada URL que ¿fue aprobada?

Relacionado con mi proyecto, ¿sería razonable simplemente crear un AsyncTask nuevo cada vez que quiera capturar un buffer de marco? Algo en la línea de:

 //for each frame buffer i want to process: new FrameProcessorTask().execute(byte[]); 

Es un hilo que se está haciendo un bucle sobre los datos.

Usted puede hacer esto también.

Con la segunda opción, es necesario tener en cuenta el tamaño del montón, ya que el teléfono sólo tiene una cantidad limitada de memoria y muchos hilos paralelos, toda la descarga en grandes búferes puede invadir la memoria disponible.

Será un solo hilo, tomado de un grupo de subprocesos administrados. La elipse del argumento es simplemente la entrada a su método doInBackground . Como se puede ver en el ejemplo, no se generan hilos allí. Si desea utilizar un hilo por URL, tendrá que crear un AsyncTask nuevo para cada uno de ellos.

  • Android ProgressDialog con el problema de roscado
  • ¿Por qué los servicios de android se ejecutan en el hilo de la interfaz de usuario?
  • Usando el EventBus de Guava, ¿es posible ejecutar código de suscriptor en el subproceso que creó el bus?
  • Android: la mejor práctica para realizar operaciones asíncronas en getView ()
  • Handlers vs llamadas asincrónicas en Android
  • ¿Cuándo debo usar cada uno de los diferentes tipos de mensajería de Android?
  • Nuevo Tema (tarea) .start () VS ThreadPoolExecutor.submit (tarea) en Android
  • ¿Es posible que un método de devolución de llamada se llame después de onDestroy?
  • Actualizaciones de interfaz de usuario de subprocesos en Android
  • Android - enviar sms en un hilo separado
  • Espere hasta que se haya agregado fragmento a la interfaz de usuario
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.