FAQ do Hibernate (Perguntas Frequentes)

FAQ do Hibernate (Perguntas Frequentes)

Q. O app usa até 40 MB de RAM. Para um app tão pequeno, ainda é muita memória. Por que?

A. O app é muito simples, mas a RAM é usada pelas listas de apps hibernados e instalados - se elas são longas, vão consumir mais memória - simples assim - e isso é algo difícil de minimizar. Por exemplos, em meus dispositivos é cerca de 7Mb.

Q. No menu de configurações, a última opção é 'Re-hibernar depois do tempo limite'. Não entendi o que significa essa opção.

A. O tempo limite é introduzido para re-hibernação automática de apps previamente ativados (da lista de hibernação), que não estão mais no plano principal. Por exemplo, se você hibernar um app A, e trocar em algum momento, ele se torna um app inativo e não estará mais hibernando. Então, se você trocar para outros apps ou travar seu dispositivo, e o app A continuar no plano de fundo por 1 minuto, Hibernate irá continuar a hibernação desse app.

Q. Qual a função do contador de tentativas nas Configurações?

A. O serviço de app checa todos os apps sendo executados contra a lista de hibernação periodicamente (você define o período nas configurações) até que você pare ou serviço ou interrompa o Hibernate. O contador de tentativas é para aqueles apps que não concordam em serem hibernados na 1ª tentativa. Alguns apps reiniciam por si mesmos depois da 1ª, 2ª, ou 3ª hibernação, mas podem parar depois disso. Normalmente, se todos os apps respeitassem suas hibernações instantaneamente, isso não seria necessário, e a primeira tentativa seria suficiente.

Q. Podemos hibernar apps do google (como Drive, Busca, Play store) e serviços do google?

A. Você pode tentar hibernar todos os apps disponíveis para hibernação na interface do Hibernate (são todos exceto aqueles em plano principal e de prioridade importante), MAS eu acho que muitos apps e serviços do google irão insistir em continuar rodando, e portanto você os terá listados na lista de insistentes e não poderá realmente hiberná-los.

Q. Por que o app não oferece um widget?

A. Por definição, Hibernate oferece um serviço, que automaticamente e infinitamente hiberna apps em plano de fundo que você especificou, então não há necessidade de um widget. Quando você abre um app da sua lista, ele é temporariamente excluído da hibernação até que o mesmo vá para o plano de fundo. Então sua hibernação continua automaticamente.

Q. Apps hibernados parecem estar rodando. Por que?

A. Podem haver várias razões para isso. Deixe-me explicar um pouco. O Hibernate funciona da seguinte forma. Uma vez que você escolheu os apps da lista de hibernação, Hibernate periodicamente tenta congelá-los usando a única função da API do android disponível para tais casos em dispositivos sem root. Alguns apps são congelados com sucesso. Outros reiniciam por eles mesmos, e o Hibernate tenta congelá-los novamente um número pré-definido de vezes (nas configurações). Se o número de tentativas se exceder, o app correspondente é marcado como "insistente" - não pode ser congelado. Ele foi projetado de uma forma que esteja sempre funcionando, e Hibernate não pode fazer nada quanto a isso. Tais apps são listados como processos insistentes. Se você não ver um app na lista de insistente, então é bem provável que ele tenha sido hibernado com sucesso, e agora eu pergunto - como você sabe que o app continua rodando? Hibernação não remove um app da lista de apps executados pelo sistema ou da lista de apps recentes! Hibernação não é o mesmo que pressionar o botão "Forçar parada" nas propriedades de sistema de app. Hibernação pausa um app, move seu estado para o disco local, e remove o app da memória (com isso ele não mais consumirá memória e nem processamento). Mas o app estará pronto para ser reativado assim que você retornar para ele. Em alguns raros casos, a frequência de tentativas de hibernar um app é a mesma que o app recria a si mesmo. Nesse caso, o app jamais será hibernado e nem marcado como insistente. Em tal situação você deve ou checar os logs do sistema (usando um app LogCat usando a chave "HIB" como filtro) e então remover apps incompatíveis da lista de hibernação, ou mudar as configurações do Hibernate apropriadamente (por exemplo, aumentar o período de hibernação e diminuir o número de tentativas).

Q. É uma pena que o app precise de bateria para continuar funcionando, caso contrário eu não posso auto-hibernar outros apps.

A. Você deveria direcionar suas críticas para o Google, que não oferece nenhuma forma de construir um gerenciador de inicialização para Android (para dispositivos sem root). Quanto ao Hibernate - tente mudar suas configurações, por exemplo, mudando o período para o máximo 10, e diminuindo o contador de tentativas para 3. Isso irá minimizar o uso de CPU pelo Hibernate.

Q. Este app pode deixar apps hibernados serem despertados pelos seus serviços de push?

A. Se você se refere à Mensagem de Nuvem do Google, sim, as notificações devem despertar apps congelados - isso é feito pelo próprio sistema. Mas você não deve hibernar serviços do Google Play que processam as mensagens recebidas.

Q. Quero traduzir o app para outro idioma. O que posso fazer?

A. Por favor, me contate por e-mail. Se você quer traduzir o app para qualquer um dos idiomas não suportados, estou pronto para cooperar. Por favor, note que eu me refiro a uma tradução profissional/humano, e não uma tradução automática. A tradução não só deve abordar o próprio app, como também o site e a página do Google Play.

Q. Há algo de errado com o Hibernate a partir do Android 5.0?

A. A partir da versão 5, o Android não oferece informação confiável sobre as tarefa sendo executadas. Eis o que a documentação oficial fala sobre o método getRunningTasks do ActivityManager que era usado no Hibernate para prevenir apps interativos de hibernarem e de continuar a hibernação de um app sem o limite de tempo quando o mesmo fica no plano de fundo:

Esse método não está mais disponível para aplicações secundários: a introdução na documentação recente indica que isso pode vazar informações pessoais para quem faz a chamada. Para retro compatibilidade, ele ainda retornar um pequeno conjunto de dados: pelo menos das tarefas de quem realiza a chamada, e possivelmente outras tarefas como home que conhecidamente não são sensíveis.

Eu não acho que a forma como o Google "protege" os documentos privados do usuário é uma maneira devida, pois eles restringiram não apenas o acesso ao conteúdo do usuário, como também o propósito geral de informação como o nome dos pacotes. Isso parece um belo de um exagero.

Mas não se preocupe. Apenas atualize o Hibernate para a versão 1.22 (ou superior). Ele implementa um assistente especial de serviço de acessibilidade que monitora em tempo real quando uma aplicação fica ativa enquanto outras vão para o plano de fundo. Nenhuma outra informação é coletada pelo Hibernate.

A única desvantagem do serviço é que você precisa habilitá-lo manualmente. Quando o Hibernate estiver inicializando em versões anteriores ao Android 5, e o serviço não estiver habilitado, o app mostra uma notificação que permite a você abrir rapidamente as configurações de Acessibilidade. A janela de configurações do app também possui uma linha especial para abrir o mesmo diálogo do sistema.

Q. Posso abrir o diálogo "info. app" do sistema (com "Forçar parada" e outros botões úteis) apenas pelo Hibernate?

Sim, você pode. Para abrir o diálogo "info. app" toque no ícone do app selecionado em qualquer lista. Na janela de Status você pode realizar um toque longo em qualquer item, e com isso exibir o diálogo "info. app".

Q. O que é a nova opção experimental de automação "Forçar parada"?

Por favor encontre maiores detalhes na página dedicada (em Inglês) - Processos de plano de fundo difíceis de serem parados no Android sem root.

No comments:

Post a Comment