2012-01-16 14 views

Respuesta

8

Generalmente, no. Si la actividad está experimentando un cambio de configuración y está siendo destruida y recreada, su hilo de fondo estará hablando con la instancia incorrecta, lo que puede causarle problemas.

Idealmente, el doInBackground() de un AsyncTask debería ser capaz de funcionar independientemente de su componente de inicio (actividad, servicio, etc.). Sugiero que cree un constructor en su AsyncTask y pase lo que sea necesario. O bien, haga que el AsyncTask sea administrado por un fragmento dinámico que usa setRetainInstance(), en cuyo caso (AFAIK) debe ser seguro para la tarea acceder a los datos privados del fragmento , ya que el fragmento no va a ninguna parte.

+0

Muy buen punto, que me hizo pensar (y probablemente conducirá a algunos refactorización en mis proyectos ...) – Guillaume

+0

@CommonsWare Por lo que puede causar problemas, pero éstos no se deben a roscar, específicamente errores de coherencia de memoria. ¿Está bien? –

+0

@Julian: Bueno, los errores de consistencia de la memoria * son * debido al enhebrado. – CommonsWare

0

cuando una clases internas acceder a los miembros privados (campos o funciones) de la clase envolvente, el compilador generará funciones de acceso a esos miembros. esto será ruptura de la encapsulación, algunos argumentan si es una Buena Cosa o una Cosa Mala.

Cuestiones relacionadas