Estoy usando AsyncTask en muchos lugares sin problemas.Patrón para hacer AsyncTask "procedural"
Ahora, con Honeycomb, todas las conexiones de red deben estar separadas por hilos de la interfaz de usuario, lo que en muchos casos necesita AsyncTasks en lugares donde antes era adecuada una conexión de red síncrona (Honeycomb lanzará una excepción para cualquier red de E/S en el hilo principal/ui).
Ahora, básicamente, me gustaría obtener algo así como Object result = MyAsyncTask().execute()
¿hay buenos patrones para esto?
He encontrado AsyncTask Android - Design Pattern and Return Values que tiene sentido y es también la forma en que GWT hace las cosas, pero de alguna manera esto suena como menear al perro por la cola (y entonces puede que yo sea el cerebro el que necesita algo más de torsión).
Gracias - eso era exactamente lo que estaba buscando - cómo podría haberme perdido eso primero. Para algunas partes, el patrón GWT es bastante agradable, pero esto ... get() tiene mucho sentido cuando es necesario hasta que las operaciones asincrónicas hayan terminado. –
Simplemente como un elemento de reflexión y para otros que tropiezan con esta respuesta, llamar a execute(). Get() desde el hilo de la interfaz de usuario es prácticamente lo mismo que ejecutar la operación en el hilo de la interfaz de usuario. Aunque esto evita generar la Excepción para las llamadas de red en el hilo principal, no evita las implicaciones de la acción. Su subproceso de interfaz de usuario se bloqueará hasta que se complete la acción de red. Posiblemente podría causar un punto muerto al tener un método postExecute porque ese método esperará a que el hilo principal esté disponible. En mi humilde opinión, usted está presentando un anti-patrón para AsyncTasks. –