A sessão de perguntas e respostas de hoje é oferecida aos entusiastas do Android, uma subdivisão do Stack Exchange, um agrupamento de sites de perguntas e respostas conduzido pela comunidade.
A questão
O leitor da Android Enthusiast, Scott Severance, está curioso em domesticar sua rotina de inicialização no Android:
When my phone starts up there are several application/services running in the background that I would rather not. And when I press the Home button while using an app, that app usually goes into the background without exiting. How can I stop these apps from running?
Qual é a solução e está impedindo-os sempre o método mais eficiente?
A resposta
O colaborador do SuperUser, Matthew Read, oferece uma análise detalhada de por que isso pode não importar tanto quanto Scott acredita, e como o Android difere fundamentalmente de outros sistemas operacionais em relação a aplicativos de inicialização e processos em segundo plano:
First Things First
You may have some misconceptions about how Android works and what’s really happening when a service is running or an app is in the background. See also: Do I really need to install a task manager?
Most apps (e.g., ones you launch manually) have their current Activity put into the background when you switch to another app or the homescreen. Activities consume some memory, so that you can go back to the app and pick up where you left off. Activities are usually not able to run computations in the background, so no CPU or battery is used for them. If battery life or CPU performance is your concern, you don’t need to worry about these apps! You don’t need to worry about memory, either; Android will automatically kill the app and free the memory if the system is running low.
If the app in background is running a service, that may be a different story. Well-designed services spend most of their time sleeping, waking up for the occasional check (new social media notifications, for example). However, poorly designed services may run more often or perform syncing operations that you don’t want, affecting battery life and your data usage. If you’ve got a rogue service you may want to try one of the solutions below.
Solutions
If you’re sure you want to make this app stop at all costs, you can try these methods.
Uninstall
When an app does something you don’t like, whether running in the background on startup or something else, your first option is to uninstall it. Problem solved! You can remove system apps if you have root, most easily with Titanium Backup, but be careful to remove only carrier bloatware and not critical system apps.
However, if you want to be able to use that app then this is not an option: keep reading.
Ping the Developer
Some of the greatest daemons that come with Android are services that run in background for no reason or when a simple interval check with Android’s AlarmManager would be sufficient. We need to kill them all with fire, and not by ignoring them. Everything that does not involve a fix by the developer is just a hack that will result in other negative side effects. If you contact the developer with your problem, they can fix the app and you can go on using it normally. That’s a win for everyone involved.
Manually Killing Apps
First, note that many apps will close completely if you Back out of them rather than using the Home button.
If you are running Ice Cream Sandwich or Jelly Bean, you can go into Settings, hit Applications, and manually shut down the app by tabbing over to the running apps. Alternatively you can hit the Recent Applications button and swipe them off the screen to close them. In older versions of Android there may be a built-in Task Manager added by the manufacturer to accomplish the same thing, or you can download a task manager app to do so. For services, look at
Settings -> Applications -> Services
AVISO: Faznão use assassinos de tarefa automáticos! Assassinos de tarefas automáticas são executados em segundo plano (exatamente o que você não quer) e executam os aplicativos sempre que eles são iniciados. Na maioria das vezes, isso piora as coisas, pois os aplicativos geralmente consomem mais recursos quando estão começando, em comparação com quando estão ociosos. Serviços executados automaticamente e reiniciados pelo sistema serão mortos repetidamente, desperdiçando sua bateria. Da mesma forma, os aplicativos que recebem eventos do sistema conhecidos como Intents (como cobertura de rede e alterações de conectividade) serão cancelados toda vez que forem iniciados para receber um evento. Nada de bom pode vir disso.
Uma possível exceção são as tarefas automáticas executadas somente quando você, o usuário, executa uma ação específica. Em essência, eles estão apenas facilitando o gerenciamento de tarefas manuais. Um aplicativo como o Tasker ou o Llama pode ser usado para encerrar atividades quando você alterna aplicativos, por exemplo, garantindo que eles não permaneçam em segundo plano. Instruções para o Llama:
Crie um novo
Event
. Adicione a condição chamada
Active App
e escolha o status
App stopped or in background
. Escolha o aplicativo que você deseja focar. Em seguida, adicione um
Action
. Selecione
Kill Application (root privileges)
e selecione seu aplicativo novamente.
Agora, sempre que você sair do aplicativo, o Llama o matará.
Editando Autostarts e Intents
Como mencionado acima, alguns aplicativos podem iniciar quando recebem Intents (eventos do sistema). Ao usar um aplicativo como "Permissões negadas", você pode alterar as permissões que os aplicativos podem solicitar, o que, por sua vez, limita os eventos que eles podem receber. Ou você pode usar um aplicativo como o Autostarts para editar especificamente quais os Intents que serão enviados para quais apps. Para ambas as soluções, você precisará de acesso root.
Outras opções:
- Gerente Autorun
- Gemini App Manager
(Autostarts é software livre / de código aberto, também disponível no f-droid.)
AVISO: Isso pode fazer com que os apps parem de funcionar ou inibamprocurado funcionalidade. Prossiga com cuidado, especialmente com aplicativos críticos do sistema.
Aplicativos congelados
Você pode usar um aplicativo como o Titanium Backup ou o App Quarantine para concluir o congelamento de aplicativos para que eles não sejam executados. Se você quiser usá-los, você tem que congelá-los primeiro.
AVISO: Faznão Faça isso com aplicativos críticos do sistema! Seu dispositivo pode não conseguir inicializar.
Coloque os aplicativos na hibernação
O Greenify (requer o privilégio Android 4.0+ e ROOT) usa uma abordagem diferente chamada "Hibernação", do tradicional "Congelamento".
Você pode seguramente hibernar qualquer aplicativo não-sistema que você não queira executar furtivamente (via serviços persistentes, receptores de broadcast, alarmes e assim por diante), efetivamente equivalente a “congelamento”, mantendo todas as suas entradas (ícone do lançador, alvo de compartilhamento, etc) totalmente funcional quando você executa explicitamente itm, sem a necessidade de congelá-lo primeiro.
AVISO: Faznão Hibernate aplicativos de despertador, aplicativos de mensagens instantâneas e outros aplicativos cuja funcionalidade básica depende do mecanismo de fundo (timer, eventos do sistema, "push", etc) para o trabalho.
The Bottom Line
O Android foi projetado para cuidar do gerenciamento de aplicativos para você. Em todos os casos, exceto os mais extremos, você não precisa se preocupar com isso. Quando há um problema, aconselhamos você a optar pela solução mais simples - a desinstalação. Todas as outras soluções são hacks em torno do que o Android foi projetado para fazer. Talvez um dia o Android tenha suporte oficial para gerenciar serviços, mas, até então, tenha cuidado.
Tem algo a acrescentar à explicação? Soe fora nos comentários. Quer ler mais respostas de outros usuários do Stack Exchange com experiência em tecnologia? Confira o tópico de discussão completo aqui.