Tengo varias subclases de actividad en mi proyecto, cada una de las cuales llama a un servicio web basado en SOAP, procesa y muestra los resultados. La serialización SOAP, el manejo de llamadas y el análisis del resultado en varios objetos POJO se encapsulan en la clase MyWebService. Esta clase ejecuta la (s) llamada (s) de servicio web real a través de una AsyncTask.¿Patrón para reutilizar Android AsnycTask en varias actividades?
Para poder devolver los resultados a la subclase de actividad de llamada, calculé que todas estas actividades deberían implementar una interfaz WebServiceResultProcessor, que define una única función (processWebServiceResults) que actúa como una devolución de llamada para AsyncTask, llamada desde onPostExecute .
También quiero mostrar un ProgressDialog durante la llamada al servicio web. Y aquí viene mi pregunta. Para poder mostrar el ProgressDialog (ya sea desde MyWebService o AsyncTask), necesito pasar una referencia al Contexto de la actividad de la persona que llama. Y para poder ejecutar la función de devolución de llamada desde AsyncTask, I también necesita pasar la misma referencia de objeto, pero esta vez como WebServiceResultProcessor. Esto me parece un olor a código, pasando el mismo objeto dos veces, pero no veo ninguna forma de evitarlo. En lugar de interactuar, podría crear una nueva clase base, extender la clase Activity e imponer la herencia de la clase de extensión, pero eso significaría que excluiría ListActivity y los gustos de usar esta clase MyWebService.
¿Hay una mejor manera de hacerlo?
¿Su WebServiceResultProcessor extienden Contexto/actividad? –
@HeikoRupp no, y probablemente preferiría mantenerlo así. –