Notificações em andamento em um IntentService

Recentemente, encontrei um bug estranho. Eu estava trabalhando em um IntentService responsável por notificar o usuário ao receber um intent; entre outras coisas que ele poderia fazer, era atualizar uma notificação sobre algo em andamento. Parecia bom na maioria dos casos, mas descobri que se estivesse sendo atualizado enquanto uma notificação “Procurando GPS” ou do seletor de teclado também estivesse ativa, ele ‘piscaria’ em cada atualização – desapareceria e reapareceria novamente.

Ainda tenho que me aprofundar no código do Android para entender a disparidade, mas a solução foi direta – o IntentService estava construindo uma Notificação inteiramente nova a cada vez, em vez de reutilizar o mesmo construtor / notificação para gerá-la.

Conclusão: se você planeja ter uma notificação contínua, parece que você precisará manter esse objeto de notificação / construtor para que possa notificar o NotificationManager com ele a fim de evitar flashes.