Pular para o conteúdo

Bastidores

O que um encerramento forçado faz com a sua luz de notificação

Pela equipe llcloud 5 min de leitura

Resposta rápida

No Android, encerrar um app à força também desliga o serviço de acessibilidade dele, tanto no Android puro quanto em Samsung, Xiaomi e outros celulares. Um app não consegue religar o próprio serviço de acessibilidade, porque o Android reserva isso ao sistema e a você. O AuraDisplay não evita toda parada, então reduz as chances com Manter o AuraDisplay ativo, percebe quando o serviço está desligado e envia um aviso com um botão Ligar de novo.

Se você usa o AuraDisplay num celular com gerenciador de bateria rígido, talvez já tenha visto isto: a luz para, você abre o app e o botão de acessibilidade está desligado. Você não desligou. Nada travou. Foi o celular que fez isso, de um jeito que o app não consegue desfazer sozinho. Este texto explica o que acontece, por que o Android funciona assim e o que construímos em volta disso.

O que acontece de verdade num encerramento forçado?

Um encerramento forçado é a forma mais forte que o Android tem de fechar um app. Ele termina o processo do app, cancela o trabalho agendado e impede que ele volte a iniciar em segundo plano até que algo específico o acorde. Você pode fazer isso com Forçar parada na página de informações do app, mas é mais comum vir de um app de limpeza ou das ferramentas de bateria da própria fabricante, que podem parar apps que acham que gastam energia demais.

Para a maioria dos apps, um encerramento forçado é só um incômodo. Para um app baseado num serviço de acessibilidade, é mais que isso. Quando o app é encerrado à força, o Android também desliga o serviço de acessibilidade dele. Isso não é peculiaridade de uma marca. Conseguimos reproduzir num Pixel com Android puro com um único comando, e ele se comporta do mesmo jeito em Samsung, Xiaomi e outros celulares.

O AuraDisplay usa duas permissões, e elas reagem de formas diferentes:

Permissão Pra que o AuraDisplay usa Depois de um encerramento forçado
Acesso às notificações Saber que uma notificação chegou e qual app a enviou Continua concedida, e o Android reconecta
Serviço de acessibilidade Desenhar a luz sobre a tela de bloqueio e o Always On Display Desligado até você ligar de novo

Essa diferença é a história inteira. A parte que ouve as notificações volta, e a parte que desenha a luz não.

Por que um app não consegue religar o próprio serviço de acessibilidade?

Porque o Android não deixa, e por um bom motivo. Um serviço de acessibilidade pode ver e agir sobre o que está na tela, e é por isso que apps para quem precisa de ajuda pra usar o celular dependem dele. Esse poder também é o motivo de o Android insistir que uma pessoa, e não um app, decida quais serviços ficam ligados.

A configuração que lista os serviços de acessibilidade ativos só pode ser alterada com uma permissão protegida que apps comuns do Google Play não podem ter. Então, depois de um encerramento forçado, não existe API, truque nem configuração oculta que deixe o AuraDisplay se ligar de novo. Apps que religam serviços de acessibilidade chegam lá por ferramentas de desenvolvedor ou root, que uma instalação normal do Google Play não tem.

Achamos que essa é a regra certa. Mas isso significa que todo conserto depois de um encerramento forçado precisa de um toque seu, então o nosso trabalho é deixar esse toque o mais fácil possível e fazer com que ele seja necessário o mais raramente possível.

O que o AuraDisplay faz a respeito?

Pensamos em três camadas: tornar uma parada menos provável, perceber quando uma acontece e deixar o conserto rápido. Nenhuma camada substitui as outras.

Prevenção: Manter o AuraDisplay ativo

Manter o AuraDisplay ativo é uma opção grátis nas configurações do app. Ela roda o AuraDisplay como um serviço em primeiro plano, que vem com uma notificação e que o Android trata como mais importante que um app comum em segundo plano. Em celulares que fecham apps sozinhos, isso reduz as chances de uma parada.

Fizemos duas escolhas aqui de propósito. A notificação pode ser dispensada com um deslize, e, depois que você dispensa, ela fica sumida em vez de voltar na hora. E nunca a descrevemos como uma armadura. Alguns gerenciadores de bateria, o Cuidados com o dispositivo da Samsung entre eles, podem encerrar à força um app mesmo enquanto ele roda assim. Ajuda, mas não é garantia.

Detecção: perceber que a luz está desligada

Lembre que o acesso às notificações sobrevive a um encerramento forçado e o Android o reconecta. Essa reconexão é o único momento em que o AuraDisplay volta a rodar sem você abrir o app, então é aí que ele confere. Pouco depois de ser reconectado, ele verifica se o serviço de acessibilidade está ligado. Se estiver desligado, ele sabe que a luz morreu.

O AuraDisplay também percebe pelo outro lado. Se as notificações continuam chegando e nenhuma é desenhada, algo está bloqueando a luz, e isso dispara a mesma verificação.

Conserto: um toque e volta

Quando o serviço está desligado, o AuraDisplay envia um aviso com um botão Ligar de novo. Ele abre as configurações de acessibilidade do celular na entrada do próprio AuraDisplay, então você só precisa ligar um botão. Se você nunca ligou o serviço antes, vê primeiro a explicação do AuraDisplay sobre a permissão, porque ninguém deveria ligar um serviço de acessibilidade sem saber por quê.

O aviso é uma notificação, então o AuraDisplay precisa ter permissão para publicar notificações. Se você as desativou, o alerta não tem como chegar até você.

Quando a luz volta, o AuraDisplay oferece as configurações que deixam a próxima parada menos provável: o botão de segundo plano ou inicialização automática da fabricante do celular, a otimização de bateria e Manter o AuraDisplay ativo.

Como deixar os encerramentos forçados mais raros no seu celular?

As configurações mudam conforme a marca, e o quanto o celular é agressivo também. Comece pelo quadro geral em por que o Android mata apps em segundo plano e depois siga o guia do seu celular:

Mais uma coisa que vale conferir: se você usa um app de limpeza ou de "turbo", veja se ele encerra outros apps à força. Alguns fazem isso, e cada parada desliga a luz de novo.

Por que estamos contando tudo isso

Seria mais fácil dizer "mantenha o app ativo e ele vai funcionar". Também não seria verdade em todos os celulares. Uma luz de notificação que apaga em silêncio é pior que uma que avisa que precisa de um toque, então escolhemos construir em torno da versão honesta. Se o seu celular continua desligando o AuraDisplay mesmo depois de tudo isso, mande pra gente por e-mail um relatório de diagnóstico do app. Esses relatórios são como aprendemos o que cada celular realmente faz.

Perguntas

Forçar parada desliga a acessibilidade no Android?

Sim. Quando um app é encerrado à força, o Android também desliga o serviço de acessibilidade dele. Vemos isso no Android puro, não só em celulares com gerenciadores de bateria agressivos. A parada pode vir do botão Forçar parada nas Configurações, de um app de limpeza ou das ferramentas de bateria da fabricante, e o serviço continua desligado até alguém ligar de novo.

Por que o app não liga o serviço de acessibilidade de novo sozinho?

Porque o Android não permite. Mudar quais serviços de acessibilidade estão ligados exige uma permissão protegida do sistema que apps comuns do Google Play não podem ter. Um serviço de acessibilidade é poderoso, então o Android quer que uma pessoa faça essa escolha nas Configurações. O máximo que um app pode fazer é perceber que está desligado e levar você ao botão certo.

Manter o AuraDisplay ativo impede as paradas forçadas?

Deixa elas menos prováveis, mas não é garantia. A opção roda o AuraDisplay como um serviço em primeiro plano com uma notificação, que o Android trata como mais importante que um app em segundo plano. Alguns gerenciadores de bateria, como o Cuidados com o dispositivo da Samsung, ainda podem encerrar à força um app que roda assim. Por isso o AuraDisplay também vigia se o serviço desliga e avisa você.

Como sei se meu celular está forçando a parada do AuraDisplay?

Se o botão de acessibilidade do AuraDisplay está desligado e você não mexeu, uma parada forçada é a causa mais provável. O AuraDisplay envia um aviso quando percebe que o serviço está desligado. Se continuar acontecendo, siga o guia da marca do seu celular e envie um relatório de diagnóstico pelo app pra vermos o que o celular está fazendo.

Continue lendo