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
- Cuando el hilo de trabajo funciona, la interfaz de usuario se vuelve intermitente
- Múltiples hilos de lectura desde el mismo socket
- Acceso al dominio desde un subproceso incorrecto Android
- Los animadores sólo se pueden ejecutar en temas Looper Android
- onCreateLoader bloquea el subproceso de interfaz de usuario
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[]);
- Android: ¿Cómo usar Gottox / socket.io-java-cliente de la biblioteca con la forma correcta?
- "Hilo ya iniciado" al reanudar la actividad
- IllegalArgumentException en StatFs en WebViewCore thread interno
- ¿Es el hilo de ArrayAdapter seguro en android? Si no, ¿qué puedo hacer para que sea seguro?
- Android: ¿Qué hilo llama .onSensorChanged?
- Interpretación del seguimiento de rendimiento de Multicore (Eclipse / Android)
- Android: aumenta AlertDialog desde el subproceso de fondo
- Hace TimerTask ejecutando en nuevo hilo
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.
- Importante no es para un buen diseño de la aplicación android (principiante / nivel de principiante)?
- ¿Por qué onClickListener no funciona fuera del método onCreate?