Actualmente solo tenemos una preferencia guardada que es la del género el del color y del nombre de
usuario todavía esas no existen pero de igual manera voy a suponer que ya las grabé y ustedes ya lo
van a ver funcionando y aquí aunque no tuviéramos nada grabado debería de aparecer la información por
defecto que yo quiero que tenga esa preferencia.
Vamos a ver cómo puedo controlar todo eso de las preferencias o el problema de no tener que hacer esto
o mi pecho un Willet y esperar los estados.
Entonces voy a crearme aquí en la carpeta R.S. un nuevo directorio y este directorio se va a llamar
ser un bajo prevés o ser Preferences o como ustedes quieran ponerle le voy a poner sorpresa aquí adentro
voy a crearme un nuevo archivo llamado preferencias y un bajo usuario apuntó Tarth.
Aquí quiero manejar todo lo que son preferencias del usuario aquí ustedes pueden grabar el toque no
pueden grabar el Heydi del usuario las preferencias si quieren recibir notificaciones el color o el
tema de la aplicación cosas por el estilo y quiero que todo esté centralizado en una sola clase que
me facilite a mí poder saber qué llaves tengo o qué valores tengo.
Entonces comencemos y empezamos a crearme la clase llamada preferencias preferencias usuario abrí cero
llaves lo que les voy a mostrar acá es básicamente el manejo de tres propiedades esto voy a ponerlos
acá.
Ninguna de estas propiedades se usa.
Simplemente quiero que ustedes las tengan visualizadas tendríamos un valor Poliana llamado color secundario
ok tendríamos otra llamada Hint que sería el género y tendríamos otro que es el string que va a ser
el nombre el nombre el género y el color secundario es lo que yo voy a manejar acá pero no las voy a
utilizar simplemente es para que ustedes sepan que esas son las tres propiedades que yo voy a almacenar
en esta clase.
La gente que trabaja en Java va a amar esta clase y se va a sentir como pez en el agua porque básicamente
es hacer un montón de seres y básicamente eso es todo pero para la gente que no sabe ya no se preocupen.
Otra cosa que yo quiero implementar acá es el patrón shington y más de uno va a decir pucha Fernando
está enamorado de ese patrón.
A cada rato lo usa pero en este caso me va a resolver el problema porque el principal inconveniente
que yo tengo si regresamos a la página de las series El principal problema que yo tengo es este.
Para obtener la instancia yo necesito de alguna manera poder obtener esa instancia antes.
Antes de dibujar los estériles widgets y si nos vamos más allá yo les puedo plantear a ustedes que en
este punto antes de mostrar mi inicial Routh yo puedo grabar en las preferencias cuál es la página en
la que el usuario cerró.
O sea la última página que el usuario visitó para que cuando él regrese a la aplicación esté exactamente
en esa misma pantalla.
Pero aquí tendríamos un problema aún mayor cómo podría ser porque aquí tenemos otro Bildt.
En este caso también tendríamos que poder determinar de forma dinámica mediante las preferencias guardadas
qué página fue y es el nivel mayor de mi aplicación.
Ya vamos a resolver eso en un futuro pero primero quiero resolver este caso quiero implementar el patrón
Singleton que me va a ayudar a manejar una instancia única de estas preferencias del usuario de esta
clase entonces comencemos Static final y se va a llamar aquí preferencias del usuario.
Voy a crear una instancia instancia de esta manera tripantu un espacio y esto va a ser igual a Niu preferencias
del usuario punto internal Internal o simplemente Goomba.
Ustedes ya saben eso ya lo hemos hecho anteriormente.
Es la misma cuestión y déjenme correr eso para que podamos ver todo el código.
Ok no existe ese método internal.
Ya lo voy a implementar entonces.
Preferencia del usuario punto bajo.
Interna.
Ok.
Eso es toda la inicialización que voy a hacer acá.
Internarlo interna está bien.
Ahora voy a crearme el constructor Factory Factory espacio preferencias del usuario.
Voy a copiarlo porque es una palabra larga.
Paréntesis abro y cierro llaves.
Cuando se ejecute el constructor en este caso el constructor normal va a retornar a la instancia que
yo tengo creada instancia Punto y Coma en teoría eso es el singleton todo eso.
Cuando alguien llega y diga Ah bueno preferencias va a ser igual a new preferencias del usuario entonces
va a parar este Factory y el Factory retornable este.
Esta instancia que tengo acá eso es básicamente todo y no importa en cuántos lugares yo haga el New
siempre va a ser la misma instancia que es lo que yo estoy buscando acá.
Adicionalmente también voy a importarme el paquete de las preferencias o preferencias compartidas también
lo voy a centralizar acá y ahora sólo me hace falta la propiedad más importante y por la cual estamos
haciendo todo este desorden no es un desorden realmente lo que quiero es manejar centralizado todas
las propiedades que se encuentran almacenadas acá entonces la propiedad es ésta vamos a ver dónde es
donde está que lo hicimos.
Es ésta la casa Preferences esto lo voy a copiar y la voy a pegar.
Vamos a ver la colocaremos aquí justo abajo del Factory.
O mejor dicho a ojo de constructor para que tenga más sentido.
Aquí la voy a colocar punto y coma este Scheffer forenses es la que me va a permitir a mí saber o tenerla
ahí almacenada y ya realizada para poderla usar o consumir después.
Eso es básicamente todo.
Voy a implementar me cuentan que estas no las voy a utilizar.
Voy a implementar un método llamado init Preference o en Press paréntesis y se dollares el límite lo
que va a hacer es esta instrucción toda esta instrucción la voy a pegar acá pero pero aquí va a ser
el de las preferencias que tengo acá estas preferencias para ser igual a la de todos entonces aquí puedo
ser un link perfecto hay gente que prefiere poner aquí el disputo props y lo puedo hacer privado mejor
para asegurarme de que no vayamos a leerlo de manera externa o sea simplemente lo voy a poner de esa
manera pueden dejarlo con el 10 y quitarle el dice sos independiente aquí yo ya estoy esperando que
tenga la instancia perfecto.
Ahora lo único que necesito ser es las propiedades que van a estar dentro de estas preferencias del
usuario.
Vamos a ver y eso es lo que yo le decía que la gente que trabaja en Java se va a sentir como un pez
en el agua porque necesito quedar los jet set y set del género.
Empezamos con el género empezamos con el jet se va a llamar género y a orillero llaves y lo que voy
a hacer es un retrón returning de las preferencias Puntoticket int y la llave.
El género se acuerdan.
Adicionalmente yo puedo poner la validación que si no existe el género el género por defecto o la propiedad
por defecto va a ser un 1 y gravó los cambios acá.
Ahora también puedo trabajar el set que es la manera para establecer un valor a el género.
Eso sería set género abro paréntesis voy a recibir un entero llamado Balio.
Ahora ya es aquí preferencias.
Punto.
Set int tap va a tener el nombre o la llave del género y el valor va a ser el palio que estoy recibiendo
hoy.
Eso es básicamente todo.
Aquí habrá que hacer lo mismo con el nombre y el color secundario pero necesito probar esto primero
vamos a ver tengo mi clase que maneja la instancia centralizada de el set Preferences pero pero pero
ahora cómo lo voy a usar en mí.
Vamos a mostrar nuestro home cómo lo puedo utilizar aquí porque en teoría no hemos hecho ningún.
No tenemos ningún beneficio porque si yo intento hacer acá y tomar mi preferencia del usuario G si yo
intento decir esto props o final si quieren final Prés es igual a preferencias del usuario punto y coma.
Y aquí voy a poner un niu importemos dar la clase tenemos las preferencias del usuario en teoría en
teoría yo puedo hacer Priests punto y aquí está el género y qué género pucha Dios mío qué mal lo escribí.
Qué género o qué barbaridad.
Nada más pónganle género porque es el género y género o si está bien regresó acá y ahora podría poner
un punto y ahí tengo el género que tengo el género y básicamente solo eso y Eleni.
Pero si yo intento imprimir ahí el género vamos a ver qué pasa aquí voy imprimir lo que es.
Vamos a ver qué es lo que sucede.
Punto.
Género.
Grabo los cambios y hay que verlo en nuestro dispositivo que vamos a ver.
Tenemos un error pero ese error ya me lo esperaba.
Voy a recargar la aplicación y vamos a ver qué sucede.
Esperemos que recargue aunque el error creo que no va a desaparecer que vamos a leer qué es lo que dice.
Mi error es hacerlo más grande.
Si estoy acá y me dice el método que fue llamado con un Nul ya se recibió un Nul Fernando y eso que
con qué se come.
Regresemos a nuestras preferencias del usuario y en el Jet puedo poner aquí un break point y hacer un
cristal para que vuelva a llegar a este punto.
En pocas palabras lo que está sucediendo o nuestro problema es que en el momento en que estamos llamando
el jet género las preferencias tienen valor de Nul.
Entonces Nul punto.
Esto no lo resuelve y va a dar ese problema.
Entonces nuestra aplicación no funciona esto en pocas palabras quiere decir que las preferencias tienen
que ser inicializar de antemano antes de poder utilizarlas.
Por eso creamos nuestro método de Prex había en Fernando no hay problema.
Entonces lo que tendríamos que hacer es llamar el método de pruebas breves punto y pruebas.
Pero acuérdense que aunque yo lo haga y algún otro vamos a tener esa el mismo inconveniente.
Por qué Fernando.
Porque acuérdense que las preferencias y elimine pruebas es un método Ishin.
En pocas palabras esto va a crear el registro en memoria de que tiene un fichero que resolver y va a
seguir construyendo nuestro Pill que esto es mucho más rápido que este.
Impress entonces esta solución no va a trabajar en este punto.
Eso es un problema que nosotros tenemos.
Entonces Fernando qué carajos o qué diablos podemos hacer.
Aquí no nos engañen que funcionó.
Eso es porque ya se hizo y hicimos el blog y por eso ya lo tenía el valor y por eso opresion dos.
Pero si yo hago un Ristar va a dar el error nuevamente esperemos.
Ahí está OK Fernando cómo podemos resolver este grandísimo inconveniente y terminar esta clase para
que ya lo que venga va a ser cuesta abajo.
Bueno la intención de que esto sea un singleton es que yo lo puedo inicializar o instancias en un nivel
superior y ese nivel superior sería mi main.
Vamos a ver aquí en mi main yo lo pueden inicializar en un nivel superior es decir hasta lo puedo inicializar
aquí antes de ejecutar la aplicación antes de hacer ese run app.
En este nivel quitemos ese punto y coma aquí puedo llamar ese y esas preferencias del usuario para cargarlas
en el momento en que la aplicación está cargándose completamente.
Y aquí en este momento yo puedo hacer también que el método Mayne sea un i5 aquí no hay ningún problema
hay Sink al hacer esto puedo hacer aquí una Waite de que cada uno ejecute la aplicación hasta que las
preferencias punto y pruebas hayan sido cargadas e iniciar izadas.
Una vez ya tengamos eso que lo hace bastante rápido ya tenemos todas nuestras preferencias cargadas.
Voy a grabar los cambios y hay que hacer un blog.
Una última vez porque aquí ya nuestra aplicación pasó por este mail.
Vamos a ver tocó el botón esperemos que cargue y aquí ya aparece el genero correctamente.
Ok aquí ya está funcionando la idea de hacer esto o de elevarlo a este nivel.
Es que en toda mi aplicación al utilizar esta clase de preferencias del usuario yo ya voy a tener cada
una de esas preferencias listas para ser consumidas de una manera sumamente sencilla.
Voy a regresar al juego y lo único que tengo que hacer acá es preferencia del usuario punto género.
Es más hasta podría elevar esto aquí a este punto del estrelles Willett para que no se esté haciendo
el bien nuevamente.
Simplemente acá grabo los cambios y deberíamos de tener el mismo efecto.
Lo bonito de esto es que si es la primera vez que la aplicación carga esta preferencia no existe.
Por ejemplo que fuera del género 1 2 3 ese género no existe al grabar los cambios nuevamente.
Noten que el género regresó uno porque cuando miro las preferencias del usuario no existe esta llave
y por consecuencia hace esta evaluación y dice que si todo esto es nulo entonces regresa uno.
Y ese es el 1 que estamos regresando acá.
Ok yo sé que esta clase tal vez fue un poco pesada pero quiero que ustedes me comprendan pueden volverla
a ver pero al hacerlo de esta manera nosotros simplemente tenemos que hacer los Geth y CETS y podemos
trabajar de manera síncrona con las preferencias del usuario.
Esto es sumamente útil y lo van a ver a lo largo de esta sección y posiblemente otras clases que vayamos
a ver más adelante.
Así que lo dejamos así continuamos con la siguiente clase.