Android Observe as Preferências Compartilhadas como LiveData

?brahim Süren Blocked Unblock Seguir Seguindo 1 de janeiro

As Preferências Compartilhadas do Android são a maneira mais fácil e fácil de armazenamento de valores-chave . Também fornece retorno de chamada para escutar alterações nos valores de preferência. No entanto, podemos tornar esse uso mais adequado para nossa arquitetura ?

Vamos imaginar que temos um aplicativo Android e armazena alguns dados de status do recurso (como aberto-fechado) nas preferências compartilhadas . Vários fragmentos de aplicativo possuem indicadores que mostram esse status do recurso e queremos ver as alterações imediatamente. Cada indicador está recebendo o status do recurso das preferências compartilhadas. Além disso, esse status de recurso também pode ser atualizado em algum serviço ou receptor de transmissão .

Nós podemos usar OnSharedPreferenceChangeListener para escutar mudanças nas preferências, mas como você pode ver, nós temos que checar todas as possíveis mudanças de chaves na declaração when e nós precisamos registrar e desregistrar o listener em cada fragmento que nós escutamos. Adicionalmente, ele não parece bom e limpo. Nós podemos fazer melhor!

Em primeiro lugar, criamos duas variáveis, listener para ouvir as alterações na preferência compartilhada e updates para observar essas alterações. Este bloco de código notificará o objeto Observable em todas as alterações no valor de preferência.

Em segundo lugar, criamos uma classe LivePreference que estende o MutableLiveData . Isso nos permitirá observá-lo com o observador . Posteriormente, filtramos as atualizações de alterações de valores de preferência por chave e as publicamos na superclasse. Agora precisamos escrever métodos getter.

Vamos usá-los e observar os valores de preferência em nossa classe de atividade.

Mais uma coisa, se precisarmos ouvir várias preferências do mesmo tipo em um lifeCycleOwner , podemos criar uma nova classe para isso também. A única diferença é que, verificaremos se a nossa chave existe na lista de chaves, em vez de verificar se as chaves são iguais.

Usamos genéricos na função porque podemos ouvir qualquer tipo de preferência.

Finalmente, o uso de exemplo de função será assim. Nós só observamos chaves e valores de bool1 , bool2 e bool3 que são booleanos.