una referente poo palabra modificadores miembros metodos encapsulamiento clase ambito acceso java android thread-safety android-asynctask inner-classes

java - referente - ¿Es seguro para AsyncTask interno acceder a los campos de miembros privados externos de la clase de actividad?



palabra public en java (2)

En general, 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 una AsyncTask debería poder ejecutarse 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, AsyncTask que AsyncTask se administre mediante un fragmento dinámico que use setRetainInstance() , en cuyo caso (AFAIK) debería ser seguro para la tarea acceder a los miembros de datos privados del fragmento , ya que el fragmento no irá a ninguna parte.

¿Es seguro que una AsyncTask de Android sea una clase interna de una Actividad para leer los campos de miembros privados de la Actividad mientras esté en AsyncTask.doInBackground ()? Gracias por adelantado.


cuando una clase interna accede a miembros privados (campos o funciones) de la clase adjunta, 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.