PreferenceDataStore en Android O
He leído este artículo https://medium.com/@ianhlake/hidden-gems-of-android-o-7def63136629 . Esto es lo que está escrito allí:
SharedPreferences está muerto. Larga vida SharedPreferences.
¿ SharedPreferences
seguirá funcionando en Android O? ¿Necesitamos implementar un mecanismo propio para almacenar datos en pares de valores clave mediante la implementación de PreferenceDataStore
¿Puede alguien ayudar a cómo sería el enfoque para implementar SharedPreferences
nuevo utilizando PreferenceDataStore
& ¿Qué es el caso de uso de desarrollar la implementación propia? Cualquier inconveniente en el enfoque actual?
- ¿Cómo puedo agregar los tonos de llamada personalizados de mi aplicación en la carpeta res / raw a un ringtonepreference
- RequestWindowFeature (Window.FEATURE_NO_TITLE); Da la excepción
- El tamaño de fuente de título de preferencia personalizada es mayor que la preferencia estándar en android 5
- Preferencia setIcon a ColorDrawable no funciona en Android 5.0 Lollipop
- Después de cambiar una preferencia (una configuración), el texto que muestra la configuración no se actualiza
- Android - ¿Cómo cambiar los textos en la actividad de preferencias dinámicamente?
- ¿Cómo detectar si se hicieron cambios en las preferencias?
- Android: cómo abrir un cuadro de diálogo ListPreference desde fuera de PreferenceActivity / PreferenceFragment?
No puedo pensar en un caso en el que es aplicable sólo para usar PreferenceDataStore en lugar de SharedPreferences completamente, pero creo que esto puede ser útil si desea utilizarlos juntos.
SharedPreferences te brinda un gran servicio que es cuando tu aplicación se actualiza, los datos aún permanecen en las preferencias, pero con PreferenceDataStore también almacenas los datos en el mismo formato que en SharedPreferences. Ahora suponga que si desea utilizar la misma interfaz de preferencia, pero que desea almacenar estos valores en la nube en lugar del dispositivo, así porque, los dispositivos pueden romperse.
Lo que PreferenceDataStore puede ayudarle con es que le proporciona la flexibilidad para almacenar datos en cualquier lugar y escribir su propia implementación. No está destinado a reemplazar SharedPreferences completamente aunque usted puede hacerlo si lo desea.
Para obtener un ejemplo, puede utilizar el token de acceso de la aplicación en las preferencias compartidas y todos los demás datos en nube o db local o cloud o tal vez el sistema de archivos si lo desea y puede utilizar la interfaz PreferenceDataStore, anote su propia implementación y luego Úsalo
Incluso en el enlace de la documentación del desarrollador en Google PreferenceDataStore https://developer.android.com/reference/android/preference/PreferenceDataStore.html está escrito
En la mayoría de los casos, desea utilizar SharedPreferences, ya que se realiza una copia de seguridad automática y migra a nuevos dispositivos. Sin embargo, la provisión de almacenamiento personalizado de datos a las preferencias puede ser útil si la aplicación almacena sus preferencias en un db local, en la nube o en un dispositivo específico como "Configuración del desarrollador". También puede ser útil cuando desea usar la interfaz de usuario de preferencias, pero los datos no se deben almacenar en absoluto porque sólo son válidos por sesión.
Así que usted puede ver que incluso google no quiere que utilice PreferenceDataStore todo el tiempo, es sólo por el momento que cuando usted necesita utilizar el mismo estilo Preferencias de almacenamiento de pares de valores clave, pero desea implementar su propio almacén de datos que Le proporcionará más flexibilidad que actualmente tiene en SharedPreferences.
Por ejemplo, ¿qué pasa si desea obtener SharedPreferences y, a continuación, poner los datos de SharedPreferences en un servidor de nube. Lo desea en el dispositivo, pero también se copia de seguridad en la nube, En este escenario PreferenceDataStore puede ayudarle.
Usted debe abandonar el mal hábito de juzgar la cubierta por su libro y leer simplemente el poste mencionado totalmente, en vez de sacar conclusiones del título capturado apenas caprichoso.
Las preferencias compartidas ni siquiera están obsoletas en O y lo que menciona Ian Lake es una mejora de esa característica, permitiendo que tu aplicación mantenga el mismo par de claves / pares de valores como lo es ahora, pero proporcione tu propio mecanismo para almacenar los datos subyacentes Firebase, servidor remoto, etc). Si no te pierdes esa función, puedes simplemente usar Preferencias Compartidas como lo hiciste hasta el momento sin ningún cambio en tu código.
Creo que estás leyendo entre líneas aquí. SharedPreferences
no están siendo obsoletas. Sin embargo, vienen con su justa parte de los problemas, por lo que en Android O la interfaz PreferenceDataStore
está destinado a dar al desarrollador una opción de desarrollar su propia aplicación que se utilizará en lugar de SharedPreferences. Desde los documentos puede llamar a setPreferenceDataStore
y
Si el almacén de datos está establecido, las Preferencias ya no utilizarán SharedPreferences.
Así que creo que lo que quiso decir dentro del post era que ahora tiene una forma construida de desplegar su propio proveedor para superar las deficiencias de SharedPreferences
Creo que has sacado una conclusión equivocada, Shred Preferences está funcionando bien en Android O.
En Android O, las preferencias individuales o incluso todo el PreferenceManager pueden llamar a setPreferenceDataStore (), permitiendo que su aplicación mantenga la misma API simple de par clave / valor, pero proporcione su propio mecanismo para almacenar los datos subyacentes.
Leer desde este enlace
- Redibujar mapa de bits en Google Maps v2 para Android
- Android: No se puede encontrar la clase de actividad explícita … startActivity desde una preferenciaActividad