O X do Xamarin Forms — Armazenando cache com Monkey Cache :P

Fala galera,

tudo beleza?

Eu gosto muito de persistência de dados, principalmente com Xamarin.

Gosto tanto que tenho diversos artigos sobre :

· O X do Xamarin Forms — Realm

· O X do Xamarin Forms — LiteDB

· O X do Xamarin Forms — LiteDB Armazenando imagens

· Palestra sobre Persistência de Dados

· King of Realm — Simplificando a alteração de objetos

Porem hoje eu trago uma solução diferente. o Monkey Cache desenvolvido pelo James Montemagno !

Mas do que se trata?

Não, Monkey Cache não é um banco de dados como LiteDB, Realm e etc. Ele inclusive utiliza alguns desses bancos em sua implementação.

Monkey cache foi criado com uma maneira simples de armazenar qualquer tipo de dados com uma quantidade mínima de dependências. Alem de facilitar o armazenamento em cache de retornos de API.

Basicamente o Monkey Cache (como diz o Nome :P) é um armazenamento de cache. Ou seja, ele utiliza os bancos que estamos acostumados , mas com toda a implementação e gerenciamento de cache.

Existem outros pacotes que efetuam o mesmo, a diferença do monkey cache é utilizar o mínimo de dependências necessario. Em outras palavras, nos armazenamos o que precisamos , configuramos e esses dados expiram depois de um tempo.

Vamos ver como utiliza-lo , assim fica mais simples a ideia.

Antes de mais nada queria dizer que este pacote esta em BETA :

E quem é o louco que usa pacote beta? EU! Eu usei em um projeto, como é código aberto eu posso correr esse risco hehehee. Aviso dado, continuemos..

Eu escrevi um artigo anterior sobre como ler RSS com Xamarin.Forms , vamos pegar o código desse artigo como exemplo e dar uma incrementada com o Monkey Cache.

Então antes de continuar baixe o código aqui.

No dia que escrevo esse artigo o Monkey Cache trabalha com com 3 armazenamentos SQLite,LiteDB e FileStore (armazenamento local sem dependências de bancos). Para o exemplo vamos utilizar o SQLite.

Instale o pacote MonkeyCache.SQLite em todos os projetos. Não esqueça de marcar o pre-release :

A única configuração necessária é registrar um ApplicationId para o MonkeyCache, ele utiliza esse id para criar uma pasta para armazenar os dados.

Então vamos criar e iniciar no App.xaml.cs :

Pronto! Vamos utilizar!

Certo a ideia aqui vai ser simples, vamos armazenar o conteúdo do feed RSS caso ele não exista, atualizar quando o usuário solicitar e ao abrir o app ja trazer do cache.

Para isso vamos modificar um pouco nossa MainViewModel :

Warning: Estou utilizando o código de outro artigo como exemplo, sugiro que você clique aqui caso não tenha baixado, antes de continuar

Tiveram muitas alterações mas eu explico. Apenas para deixar mais facil o entendimento eu separei a lógica em dois métodos .

CarregaRSS : Responsável por verificar se existem dados em cache ao abrir o a view, caso não tenha ele chama o GravarRSS();

GravarRSS : Verifica quais dados ja existem em Cache, os que não existir ele armazena. Carrega a lista principal ao finalizar.

O segredo do monkey cache esta na classe Barrel, nós utilizamos uma "Key" para representar a entidade de armazenamento dos dados com o método Barrel.Current.Add() . E a mesma Key para recuperar os dados com o método Barrel.Current.Get().

O Legal é que o método Add recebe uma lista inteira e efetua a gravação.

É possível configurar por quando tempo o cache ficara armazenado na hora de gravar , no meu caso coloquei 30 dias.

Execute o App após a implementação (eu poderia postar um print aqui do app mas é uma experiencia que só fica evidente executando você mesmo), agora ele carrega do cache deixando muito mais rápido a inicialização.

Caso o usuário queira atualizar o conteúdo basta puxar para baixo.

A pergunta que vem a sua cabeça é: mas poxa toda vez o usuário vai ter que puxar para atualizar, não tem como automatizar ? A resposta é sim, e esse é o tema do próximo artigo ;) .

Bem legal não?

Se quiserem podem baixar o exemplo utilizado clicando aqui.

Quer ver outros artigos sobre Xamarin ? Clique aqui.

Espero ter ajudado!

Aquele abraço!

Microsoft MVP,Gamer, Desenvolvedor e apaixonado por tecnologia!

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store