O AlarmManager não funciona em vários dispositivos

Meu aplicativo usa o AlarmManager e funciona há 4 anos. Mas notei que ele começou a falhar em alguns dispositivos.

Tenho certeza de que o código está correto (estou usando WakefulBroadcastReceiver e setExactAndAllowWhileIdle para dispositivos com Doze) porque está funcionando perfeitamente em dispositivos Nexus, mas falha em dispositivos de alguns fabricantes (Huawei, Xiaomi ...).

Os dispositivos Huawei, por exemplo, têm um tipo de gerenciador de bateria que mata aplicativos e, quando um aplicativo é interrompido, os alarmes programados são cancelados. Portanto, a configuração de um aplicativo como "protegido" no gerenciador de baterias da Huawei resolve o problema.

Mas recentemente notei que não está funcionando com mais dispositivos: Xiaomi, Samsung (talvez esteja relacionado ao novo "Smart Manager"?) ... Parece que esse comportamento está se tornando um padrão: matar aplicativos em segundo plano.

Alguém sabe algo sobre isso? Alguma maneira de garantir que o alarme seja disparado?

EDIT: Esse problema é causado por "economizadores de bateria" adicionados por diferentes fabricantes. Mais informações aqui:https://dontkillmyapp.com/

questionAnswers(14)

yourAnswerToTheQuestion