Erro de documentação: receptores de transmissão registrados no manifesto recebem intents ACTION_SHUTDOWN no ​​Android 8.0

click fraud protection

As intenções de transmissão registrada do manifesto são limitadas a apenas algumas no Android Oreo, e ACTION_SHUTDOWN não é uma delas, ou é?

O Android usa intenções de transmissão para muitas coisas. Os desenvolvedores de aplicativos podem ouvi-los executar determinadas ações, como quando a intenção de transmissão MEDIA_MOUNTED para que os aplicativos saibam quando um cartão SD foi montado como armazenamento. Como desenvolvedor de aplicativos, você pode programar receptores de transmissão para isso e, em seguida, chamar uma função sempre que a mídia for montada, por exemplo, para alterar o diretório de armazenamento padrão do aplicativo para o cartão SD. É para esse tipo de coisa que as intenções de transmissão são usadas. Eles são usados ​​principalmente para transmitir certos eventos do sistema para qualquer aplicativo que possa precisar dessas informações. Os receptores de transmissão precisam ser registrados no arquivo de manifesto do Android ou programaticamente quando estiverem em primeiro plano.

Devido a uma abundância de destruição de memória causada por muitos desenvolvedores diferentes implementando todos os tipos de transmissões receptores para intenções de disparo frequente, o Google decidiu restringir o acesso à maioria dessas intenções de transmissão no Android 8,0 Oreo. A empresa reconheceu, porém, que havia algumas intenções de transmissão importantes que podem ser ainda devem ser ouvidos, uma vez que não ocorrem com tanta frequência e, portanto, têm poucas chances de causar memória problemas. Eles publicou uma lista branca de transmissão implícita intenções que os aplicativos Android ainda podem escutar registrando receptores de transmissão no Manifesto Android. Esta é uma lista extensa e cobre quase tudo que você, como desenvolvedor de aplicativos, pode precisar, com uma exceção.

Parece que o Google não listou uma intenção de transmissão usada por muitos aplicativos. Isto é o ACTION_SHUTDOWN intenção de transmissão. Essa intenção é enviada quando o dispositivo é desligado, o que pode ser muito importante para os desenvolvedores de aplicativos, para que eles possam encerrar rapidamente o que quer que o aplicativo esteja fazendo antes que o processo seja encerrado. Apesar dessa intenção de transmissão não aparecer na lista de intenções da lista de permissões, os aplicativos pode na verdade, ainda ouço através de um receptor de transmissão registrado no Manifesto de acordo com um commit no Android Git, apenas o Google esqueceu de incluí-lo em sua lista.

É ótimo que ele esteja na lista de permissões, já que o Google está removendo a capacidade dos aplicativos de detectar quando o dispositivo está sendo desligado seria ruim para usuários e desenvolvedores de aplicativos, pois alguns aplicativos não seriam mais capazes de salvar o trabalho rapidamente antes do desligamento do dispositivo. Não sabemos ao certo por que essa intenção de transmissão não está listada na página do Google para desenvolvedores, mas conversamos com um desenvolvedor Android veterano CommonsWare e ele concorda que provavelmente é um simples erro de documentação por parte do Google. Não seria a primeira vez que isso acontece, segundo ele.