¿Es seguro para una AsyncTask Android que es una clase interna de una Actividad para leer campos miembros privados de la actividad, mientras que en AsyncTask.doInBackground()? Gracias por adelantado.¿Seguro para AsyncTask interno para acceder a los campos de miembros privados de la clase de actividad externa?
Respuesta
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.
Muy buen punto, que me hizo pensar (y probablemente conducirá a algunos refactorización en mis proyectos ...) – Guillaume
@CommonsWare Por lo que puede causar problemas, pero éstos no se deben a roscar, específicamente errores de coherencia de memoria. ¿Está bien? –
@Julian: Bueno, los errores de consistencia de la memoria * son * debido al enhebrado. – CommonsWare
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.
- 1. acceso a los datos privados de los miembros de la clase externa en la clase interna
- 2. ¿Cómo uso los ayudantes de clase para acceder a miembros privados estrictos de una clase?
- 3. Acceder a dejar los campos vinculados de los miembros estáticos
- 4. Accediendo a miembros privados
- 5. ¿Cómo puedo utilizar PrivateObject para acceder a miembros privados de mi clase y su principal?
- 6. ¿Puede una clase externa acceder a los miembros de la clase interna?
- 7. amigo con clase pero no puede acceder a miembros privados
- 8. En clases anidadas de Java, ¿puede la clase adjunta acceder a miembros privados de clases internas?
- 9. Convención de nomenclatura para campos privados
- 10. Android AsyncTask Mejor forma de acceder a la actividad Contexto
- 11. Acceso a los miembros privados de PowerShell
- 12. ¿Cómo hacer que una clase pueda acceder solo a ciertos miembros privados de otra clase?
- 13. == sobrecarga puede acceder a miembros privados de argumento
- 14. ¿Cómo ocultar miembros privados de una clase?
- 15. ¿Miembros privados en la clase pimpl?
- 16. ¿Cómo puede Spring/Hibernate acceder a miembros privados?
- 17. ¿por qué la clase derivada hereda los miembros privados de la clase base?
- 18. Declaración de variables de miembros privados
- 19. ¿Puedo transformar un objeto y acceder a los miembros de datos privados en C++?
- 20. C++ miembros privados de la clase base abstracta
- 21. Acceso a campos privados
- 22. ¿Cómo acceder a los miembros estáticos de una clase?
- 23. Acceder a elementos privados del objeto de la misma clase
- 24. ¿La herencia protegida permite que la clase derivada tenga acceso a los miembros privados de su clase base?
- 25. Serializar datos de miembros privados
- 26. ¿Cómo acceder a la IU de actividad de mi clase?
- 27. Clase anidada 'acceso a la clase adjunta' miembros de datos privados
- 28. Acceso miembros privados de plugin de jQuery
- 29. Acceso a los miembros internos de la clase anónima
- 30. ¿Cómo acceder a la variable de clase externa sombreada desde la clase interna?
demasiado genérica una pregunta, es el último miembro de campo privado? – Scorpion