Pérdida de memoria causada por el modo singleton
Debido a que la naturaleza estática del singleton hace que su ciclo de vida sea tan largo como el de la aplicación, puede causar fácilmente pérdidas de memoria si se usa incorrectamente. Por ejemplo, aquí hay un ejemplo típico.
Este es un patrón singleton común. Al crear este singleton, debido a que necesita pasar un contexto, el ciclo de vida de este contexto es muy importante:
1. Si pasa el contexto de la aplicación en este momento, no habrá nada. problema, porque la aplicación El ciclo de vida es el ciclo de vida de toda la aplicación.
2. Si se pasa el contexto de Actividad en este momento, cuando la Actividad correspondiente a este contexto sale, dado que la referencia de este contexto la mantiene el objeto singleton, su ciclo de vida es igual a la vida. ciclo de toda la aplicación, por lo que cuando sale la actividad actual, su memoria no se reciclará, lo que provocará fugas.
El método correcto debe cambiarse a lo siguiente:
O escríbalo así, ni siquiera es necesario pasar el contexto:
Agregar un método estático para la aplicación, getContext() devuelve el contexto de la aplicación.