O Google maps parece ter uma quantidade insana de intenções registradas, além de outras formas de iniciar.
Como esse é um aplicativo que demanda muito recursos (principalmente em termos de memória), eu gostaria muito que ele permanecesse em execução permanentemente, a menos que eu realmente precise. No entanto, o Android continua iniciando o tempo todo - por exemplo, quando o status da conectividade é alterado (o que para mim acontece com bastante frequência em ambientes fechados) ou o local do GPS / rede.
Existe alguma maneira de garantir que o Google Maps não inicie QUALQUER processo, garantido, até clicar em um ícone para iniciá-lo deliberadamente?
Ambiente : Droid X, executando o rooted Froyo 2.2; Eu tenho arranques automáticos . e Advanced Task Killer, bem como a versão Pro do Titanium Backup instalada.
Estou bastante aberto a quase qualquer método, desde que
É confiável.
Ele permite que eu use o Google Maps com 100% da funcionalidade pretendida quando eu precisar, sem precisar de 5 minutos de trabalho para reconfigurar.
Idealmente, não requer que eu reinicie para usá-lo, mas este não é um bom negócio.
Eu preferiria fortemente um método genérico que seria aplicável a outros aplicativos, não apenas ao Google Maps.
Sou desenvolvedor de software com uma grande dose de experiência em administração de sistemas Unix / Linux. Em outras palavras, soluções que requerem prompt de shell ou scripts de escrita / execução de shell (ou Perl no Android Scripting Environment) são extremamente bem-vindas.
As soluções que envolvem escrever meu próprio aplicativo Java Android são aceitáveis desde que detalhadas o suficiente para que um novato em desenvolvimento Android possa realizar pelo menos algum trabalho sem estar 100% perdido.
Coisas que tentei:
Matar os processos via Task Killer NÃO está funcionando - eles voltam, imediatamente ou em pouco tempo. Provavelmente via Intents, mas não 100% certo.
Métodos padrão para se livrar dos problemas do GMaps (faça logout no Latitude / desligue o GPS e o localizador de rede). Isso parece ajudar muito, mas acho inaceitável a necessidade de desligar permanentemente o GPS / localizador - por exemplo, ele não me permite executar o aplicativo Locale ou coisas Tasker baseadas em localidade.
Congelar via Titanium Backup Pro. Isso requer uma reinicialização e geralmente não é muito agradável.
As possíveis abordagens em que pensei (mas não sei como fazer) são:
De alguma forma, elimine (desative) TODAS as intenções registradas pelo Google Maps quando não for necessário.
Problemas: primeiro, não sei o que TODAS as intenções do Google Maps usam.
Segundo, a única maneira prática de fazer isso que conheço é o aplicativo Autostarts, que NÃO é uma solução viável - leva de 5 a 10 minutos para encontrar e reativar todas as intenções que tenho conhecimento (o Autostarts é realmente ruim em - gerenciamento de intenção de aplicativo - é centrado por intenção), não importa as possíveis intenções que a Autostarts NÃO conhece (é uma caixa preta, não sei quais intenções são perdidas, se houver).
Ter um script que irá renomear os JARs ou o que os arquivos executáveis no Android são (.apk inteira?) De dizer
GoogleMaps.apk
paraGoogleMaps.disabled.apk
e volta.Problema: não sei se isso é possível em um Froyo enraizado. Além disso, o Google Maps foi pré-instalado no DroidX, portanto, a renomeação afetaria SOMENTE a atualização, mas não o aplicativo original?
Tenha um script que vá para o APK e renomeie / mova / esvazie o arquivo de manifesto para remover qualquer intenção desse aplicativo.
Problema: Isso exigiria uma recompilação? Definitivamente requer uma reinicialização que é um sinal de menos
Respostas:
Pela sua menção ao Titanium Backup, presumo que seu dispositivo esteja enraizado. Portanto, minha recomendação absoluta aqui é o AutoRun Manager (e sim, você precisará do Pro - segundo sim, vale a pena). Tendo isso instalado, abra o aplicativo, use o "modo avançado", procure o aplicativo que você deseja modificar (no seu caso: Google Maps). Expanda-o. O ARM mostrará todos os seus ouvintes - desative-os.
É isso aí. Nada está despertando mais, a menos que você o inicie explicitamente. MAS: Antes de iniciá-lo, talvez seja necessário ativar esses ouvintes novamente ou você poderá experimentar efeitos colaterais estranhos (eu fiz). Por outro lado, pelo menos isso não requer uma reinicialização.
Para obter detalhes técnicos, convém verificar com a pergunta Como gerenciar associações de intenção com aplicativos ou mergulhar diretamente na seção Intents dos manuais do desenvolvedor do AOSP .
fonte
Primeiro, sugiro que você pare de usar seus assassinos de tarefas . Eles estão drenando sua bateria mais do que salvando-a. O sistema está reiniciando os serviços quando eles precisam ser executados, o que está causando o uso da bateria.
Segundo, você assume que liberar memória é uma coisa boa. Não é. Liberar memória não diminui o uso da bateria. O que você realmente precisa procurar são os aplicativos que usam muitos ciclos de CPU. É isso que esgotará sua bateria.
O Android é baseado no Linux. O Linux sempre deseja usar toda a memória disponível, porque a memória livre é perda de memória. O sistema Android cuidará de liberar memória de aplicativos que não estão em uso, para que outros aplicativos possam usá-lo quando necessário.
Mesmo se você tentar matar os aplicativos que estão executando e consumindo memória, o sistema reiniciará esses serviços / aplicativos, o que causará o esgotamento da bateria, porque eles provavelmente têm alguma sincronização que acontece ao iniciar ou apenas os ciclos da CPU usados para inicializar o aplicativo. Matar os aplicativos também fará com que o dispositivo pareça lento ao tentar iniciar aplicativos, porque algo que normalmente pode estar em execução agora precisa ser reiniciado antes de apresentar a interface do usuário dos aplicativos.
Algumas coisas que causam o consumo de bateria, como GPS, wifi, bluetooth e uso de dados, vão usar muito mais a sua CPU para processar os dados que estão sendo transmitidos e recebidos. Desativá-los quando não estiverem em uso economizará bastante bateria. Tenho uma bateria defeituosa no dispositivo, ela nem carrega mais de 94%, mas posso tirar 12 ou mais horas da bateria se desligar esses serviços quando não precisar deles.
Eu uso o Google Maps o tempo todo e, nas estatísticas da minha bateria, ele nem é listado como um aplicativo usando recursos. O meu usuário com bateria mais alta é o Screen @ 31%, e o menor mostrado é o GMail @ 3%. Posso garantir, o Google Maps não é a causa do consumo de bateria. Usar assassinos de tarefas é mais provável a causa. Como eu disse, uso o Google Maps para obter direções quase diariamente, e ele nem está na lista dos 10 principais aplicativos que estão usando minha bateria.
Mais informações sobre assassinos de tarefas no blog do Google Android Developers .
Aqui está outro artigo falando sobre como os assassinos de tarefas esgotam sua bateria.
Uma coisa que você pode fazer se estiver realmente definido em "parar mapas" até que você queira usá-lo é usar a opção Congelar no backup de titânio. Isso essencialmente removerá o aplicativo do dispositivo e nenhum dos serviços associados a ele será iniciado até que você o retire do congelamento.
fonte
Você já pensou em desinstalar e reinstalar o Maps como uma possível solução?
Primeiro, livre-se dos mapas pré-carregados excluindo o
/system/app/Maps.apk
arquivo:Depois que um aplicativo do sistema é atualizado, ele é inútil na pasta / system / app e pode ser excluído com segurança.
Em seguida, copie a versão atual do Google Maps para o seu cartão SD:
Agora desinstale o aplicativo Maps:
A opção "-k" mantém as configurações para quando você reinstalar o aplicativo.
Agora, para recuperar o Google Maps, basta reinstalá-lo a partir do backup:
Você pode automatizar essas etapas via GScript , o que permite criar atalhos para scripts. Portanto, basta criar um script chamado "Desativar mapas" com o comando da etapa 3 e outro chamado "Ativar mapas" com o comando da etapa 4 (marque "Precisa de SU?" Para ambos).
Agora você pode adicionar 2 atalhos do GScript à sua tela inicial a partir dos scripts criados usando o método "Adicionar atalho" normal do Android (o GScript será uma das opções).
A única desvantagem desse método é que você provavelmente perderá o atalho do Google Maps (e / ou widget) da tela inicial ao desinstalá-lo, exigindo que você o adicione novamente após a reinstalação. Obviamente, você ainda poderá iniciar o Google Maps a partir da gaveta do aplicativo.
fonte
A partir do Android 4.0 Ice Cream Sandwich, você pode simplesmente desativar o Google Maps nas configurações do sistema . Isso não irá ajudá-lo se você ainda estiver preso no Froyo, mas outros poderão obter algum benefício com isso.
fonte
Sugiro usar o recurso Freeze do link do mercado da página inicial de backup do Titanium . Eu acredito que você precisa registrar o aplicativo (US $ 6,58) para usar o recurso, mas garanto que vale a pena o preço, se você gosta de hackear o telefone. O outro principal motivo para pagar pelo aplicativo (que não seja o suporte ao desenvolvedor para a criação de um bom software livre) é ser capaz de fazer instalações em lote (ou seja, restaurar do backup) dos aplicativos e dados dos quais você fez backup. Caso contrário, você precisará acessar as caixas de diálogo padrão de instalação de aplicativos.
No site sobre congelamento:
Ou você pode realmente desinstalar e reinstalar. Você pode achar que há razões para fazer isso congelando, não sei.
fonte
Se o seu telefone tiver a opção
Settings > Applications > Development > Stop app via long-press
, você sempre poderá fechar o Google Maps dessa maneira; esse processo também será interrompido até você abrir o aplicativo novamente.fonte
Faça root no seu telefone e use o aplicativo AutoStarts do Google Play para desativar todos os eventos que acionam o Maps. Ele funcionará bem quando iniciado manualmente, mas permanecerá ausente quando você o matar. Desative qualquer outra coisa que você não precise na pasta de eventos Após a inicialização para reduzir ainda mais o consumo de memória.
fonte
Second, the only practical way of doing that that I know of is Autostarts app which is NOT a workable solution - it takes ~5-10 mins to find and re-enable all the intents I am aware of (Autostarts is really poor at per-app intent management - it's centered on per-intent), never mind possible intents that Autostarts does NOT know about (it's a black box, I don't know which intents are missed if any.