Red de conocimiento informático - Problemas con los teléfonos móviles - Análisis de principios internos de SharedPreferences

Análisis de principios internos de SharedPreferences

El principio de funcionamiento interno de SharedPreferences:

1. Llame a getSharedPreferences(); para crear un objeto SharedPreferences. Primero determinará si hay un par de

archivos xml correspondientes. Para existir, habrá una operación de precarga, que almacena el contenido del archivo xml en un objeto de mapa después de analizarlo mediante operaciones de E/S y XmlUitl. La operación consiste en almacenar el contenido del archivo xml en el objeto de mapa mediante operaciones de E/S y análisis XmlUitl, por lo que llamamos a SharedPreferences::getString(); acceder directamente al contenido de la colección de mapas puede mejorar la eficiencia. Si el xml correspondiente no existe, se volverá a crear un objeto de mapa. Si el xml correspondiente no existe, cree un nuevo archivo xml correspondiente.

2. Operación de escritura: la operación de escritura también tiene dos pasos: uno es escribir los datos en la memoria primero, es decir, la colección de mapas, y el otro es escribir los datos en el disco duro. archivo. Esto garantizará la integridad de los datos. Hay dos métodos de envío para operaciones de escritura:

Según la explicación del código fuente, el método de confirmación tiene las siguientes características

El procedimiento almacenado es un. método de confirmación de operación atómica Hay un valor de retorno, que es verdadero si se configura correctamente; de ​​lo contrario, es falso

Al mismo tiempo, es SharedPreferences

El proceso de escritura de la aplicación Se divide en dos pasos. El primer paso es escribir en la memoria de forma sincrónica y el segundo paso es escribir de forma asincrónica en el disco físico. El primer paso es escribir en la memoria de forma sincrónica y el segundo paso es escribir en el disco físico de forma asincrónica. El proceso de escritura bloquea otras escrituras en el mismo objeto SharedPreferences.

Obviamente, el método de aplicación no tiene valor de retorno, por lo que el usuario no tiene forma de saber si el envío fue exitoso. Intuitivamente, existen otras dos implementaciones de Runnable. El proceso de envío utiliza el envío de subprocesos, que es asincrónico.

La palabra clave de sincronización se usa ampliamente para operaciones de confirmación en memoria y escritura en disco para garantizar la seguridad de los subprocesos. Finalmente, el bloqueo se utiliza para esperar a que se completen otros subprocesos. Por lo tanto, la operación de confirmación es segura para subprocesos en un entorno de subprocesos múltiples. Tenga en cuenta que el uso de try-catch garantiza que el proceso de envío no se interrumpa.

Resumen de comparación:

Confirmar y aplicar son operaciones atómicas y la confirmación no se puede interrumpir.

La confirmación tiene un valor de retorno, por lo que puede saber si la operación fue exitosa, mientras que la aplicación no tiene valor de retorno.

La confirmación es un proceso sincrónico, que es más lento que la confirmación asincrónica de Apply.

El método de confirmación enviará los datos modificados a la memoria y luego los enviará sincrónicamente al disco de hardware, de modo que cuando se envíen varias confirmaciones simultáneas, esperarán a que la confirmación que se está procesando se guarde en el disco antes de operar. . Esto reduce la eficiencia.

La aplicación envía los datos modificados a la memoria y luego de forma asincrónica al disco de hardware.