Adenilson Rodrigues da SilvaEu queria uma forma de aprender palavras novas sem precisar abrir um app de dicionário toda hora. A...
Eu queria uma forma de aprender palavras novas sem precisar abrir um app de dicionário toda hora. A solução? Criei o EnglshWidget: um widget estilo "post-it" que fica na minha tela inicial e se atualiza automaticamente.
Queria que ele fosse capaz de:
1.Buscar definições em tempo real (Inglês).
2.Funcionar offline com uma base curada (Italiano).
3.Ser resiliente a falhas de rede.
A Solução: Arquitetura Híbrida
Usei o que há de mais moderno no Android:
•Jetpack Glance: Para criar o widget usando a sintaxe declarativa do Compose.
•WorkManager: Para garantir que o widget se atualize sozinho, mesmo com o app fechado.
•Free Dictionary API: Para conteúdo em tempo real (com sistema de fallback para JSON local).
O ponto(Resiliência)
O widget tenta buscar via API, mas se a rede falhar, ele usa um arquivo JSON local como plano B, garantindo que o usuário nunca fique sem sua palavra do dia. Adicionei até um indicador (*) para saber quando o dado veio da API!
O Desafio Técnico: Sincronização entre WorkManager e Glance
Um dos maiores desafios que enfrentei foi garantir que o widget atualizasse a interface assim que o WorkManager terminasse o processo de busca na rede. Como o Glance trabalha de forma assíncrona, simplesmente disparar a tarefa não bastava. A solução foi iterar sobre os GlanceId ativos e forçar o update() individualmente, garantindo que o sinal de atualização chegasse a todas as instâncias do widget na tela do usuário.
(Aqui insira o seu print)
O projeto está disponível no repositório para quem quiser aprender.