Android Dev BR
Published in

Android Dev BR

Primeiros passos com Jetpack Glance para App Widgets

Different items over a white table por PNW Production

Como funciona?

O Glance provê o seu próprio conjunto de Composables para serem usados no nosso GlanceAppWidget e os converte automaticamente para RemoteViews para renderizar os widgets usando as bibliotecas atuais de App Widgets.

Glance utiliza sua própria implementação de Compose

Como mencionado anteriormente, o Glance utiliza seu próprio conjunto de Composables, o que significa que ele não é interoperável com as bibliotecas padrão do Jetpack Compose. Isso é necessário porque como o Glance precisa converter os Composables para RemoteViews, nem todo componente suporta essa transformação.

Exemplo de erro do Glance App Widget
E/GlanceAppWidget: Error in Glance App Widget
java.lang.IllegalStateException: CompositionLocal LocalDensity not present at androidx.compose.ui.platform.CompositionLocalsKt.noLocalProvidedFor(CompositionLocals.kt:170)

Atualizar os dados é diferente do Jetpack Compose

Outro ponto que vale ressaltar ao usar essa biblioteca é que o processo de recomposição é um pouco diferente do Jetpack Compose padrão. No Compose do Glance não é possível, por exemplo, coletar um Flow de estados e fazer a tela se recompor a cada alteração.

As interações com usuário são mais fáceis de serem tratadas

Outra ótima adição nessa nova biblioteca é facilitar o tratamento de interações com usuário. Não há mais a necessidade de criar PendingIntent para gerenciar chamadas em processos diferentes do seu app a cada toque do usuário no widget. Agora com o Glance, você pode prover uma “action” e toda a complexidade da comunicação é feita automaticamente para nós!

Teste no Android 12 e versões anteriores

Apesar desse ponto não se aplicar apenas quando usamos o Jetpack Glance, é uma boa ideia testar o seu App Widget em diferentes versões do Android, especialmente antes e depois do Android 12.

E agora?

Os widgets são parte do ecossistema do Android desde o começo mas não receberam muito amor durante a expansão do sistema operacional. Nos últimos anos, o Google está lançando novas funcionalidades, suporte e documentações para nos ajudar a desenvolver widgets belos e responsivos em várias telas e formatos. Pessoalmente, estou muito animado com a direção que essa biblioteca está tomando, mesmo em um estágio inicial é possível ver a dedicação por trás dela.

Alkaa Task List Widget

Recursos externos (em inglês)

--

--

Artigos em português sobre Android, curados pela comunidade Android Dev BR. Junte-se a nós: https://androiddevbr.org/.

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
Igor Escodro

Passionate Android developer | Google Developer Expert for Android