Sei que, aparentemente, não é uma boa ideia fechar aplicativos no iPhone para economizar bateria. Eu li perguntas e respostas como Os aplicativos de fechamento forçado têm algum benefício em dispositivos iOS? mas ainda não gelou comigo. Às vezes, encontrei mais de 50 aplicativos em execução, portanto, não fechá-los não faz sentido.
Talvez eu seja um pouco velho e você não pode ensinar novos truques para cães velhos, mas alguém aqui pode explicar POR QUE é melhor manter todos esses aplicativos em execução? E quando digo "explicar", quero dizer nos termos dos leigos para que eu possa entender.
Respostas:
Você não está sozinho. As pessoas estão acostumadas com os hábitos de seus computadores de mesa, e é compreensível que elas os levem aos seus iPhones e iPads.
No entanto, deixe-me tentar explicar isso usando uma analogia:
Imagine que está um dia quente e você está fora de jardinagem. Você fica com sede, então entra na cozinha, pega um copo grande, coloca um pouco de gelo e o enche de água. Você então bebe metade e esvazia o resto na pia antes de voltar para fora. Não muito tempo depois, você fica com sede de novo e volta para a cozinha, pega o mesmo copo, coloca um pouco de gelo e o enche de água. Novamente, você bebe apenas metade e esvazia o resto na pia!
O fluxo de trabalho acima simplesmente não faz muito sentido. Por que você não leva o copo para fora com você? E você não está apenas desperdiçando água ao esvaziá-la, mas está gastando mais tempo e energia recebendo essa água novamente.
Da mesma forma, quando você sai de um aplicativo, está realmente usando alguma energia da bateria no processo de fazê-lo (por exemplo, removendo-o da RAM, etc) e depois novamente quando você precisar iniciá-lo novamente e carregá-lo novamente na RAM.
Portanto, na grande maioria das vezes, é melhor deixar os aplicativos abertos. Mesmo estando abertos, eles estão apenas sentados em um tipo de modo suspenso que não consome nenhuma energia da bateria. Sim, o aplicativo ainda está carregado na RAM e está ocupando espaço , mas na verdade não está fazendo nada - está apenas lá, inativo. E, como não usa energia da bateria nesse estado, não há vantagem em abandoná-la do ponto de vista de conservação da bateria - especialmente se for um aplicativo que você sabe que vai usar repetidamente ao longo do dia.
Também não há realmente nenhuma vantagem em forçar o encerramento de um aplicativo, porque o próprio iOS fará isso por você, se / quando for necessário, a fim de liberar RAM. Portanto, se você tem 50 aplicativos abertos e eles permanecem abertos, o iOS não foi levado ao ponto de precisar fechar qualquer um deles para liberar memória.
Agora, como qualquer coisa, sempre há exceções à regra (como aplicativos que precisam executar tarefas em segundo plano). Um exemplo disso é aquele que toca música enquanto você faz outras coisas com o telefone, ou que está baixando conteúdo em segundo plano ou que conta quantas etapas você percorre por dia, etc. No entanto, o iOS tem uma extrema processo eficiente para gerenciar aplicativos / tarefas em segundo plano e, se você optar por sair deles, está basicamente dizendo que não confia no sistema operacional para fazer seu trabalho corretamente.
Portanto, fique à vontade para sair dos aplicativos quando precisar (por exemplo, porque está congelado etc.), mas não faça isso para economizar a energia da bateria. De fato, se você conseguir, estará alcançando o oposto e usando mais energia da bateria ao longo do dia!
Sumário
A maioria dos aplicativos no App Switcher fica em estado suspenso - isso significa que não são: visíveis na tela, executando código, usando a CPU ou GPU ou usando a bateria. No entanto, eles são ainda residente na memória até que eles são removidos (se necessário) pelo sistema para liberar memória:
Fonte : Veja a Tabela 2-3 no primeiro link de referência no final desta resposta.
Os únicos aplicativos realmente executados no seu iPhone em um determinado momento são o aplicativo ativo (ou seja, o visível na tela) e outros que trabalham em segundo plano . ( Nota: existem algumas exceções temporárias a isso no caso de aplicativos que ainda precisam de tempo para concluir a execução do código que eles já iniciaram enquanto estavam ativos - normalmente isso é apenas na ordem de segundos, mas teoricamente pode se estender para mais de um minuto.) .
Referências
fonte
As respostas fornecidas são precisas, só quero esclarecer do ponto de vista de um desenvolvedor iOS.
O iOS foi projetado para gerenciar o máximo de coisas possível, para que você (e desenvolvedores) não precisem se preocupar com eles. O resultado final é uma abordagem um tanto consistente entre os aplicativos, incluindo os da Apple (mesmo que às vezes a própria Apple faça alguns cantos).
Dito isto, a premissa é:
Dito tudo isso, supõe-se que a maioria dos usuários feche os aplicativos na esperança de aumentar a vida útil da bateria, com a impressão de que, ao fechar as coisas, menos energia será desperdiçada na manutenção desses aplicativos em execução.
A verdade é que, no iOS, isso quase nunca acontece. Quando você pressiona a tecla Início, o aplicativo é suspenso e não usa mais os recursos que outro aplicativo pode precisar. Se um novo aplicativo (ou mesmo iOS) precisar dessa memória, ele cuidará dele sozinho, mas apenas se for necessário.
Você fecha os aplicativos repetidamente, está forçando o iOS a executar essa tarefa potencialmente cara de realmente descarregar um aplicativo, salvando seu estado e o que não é, com o problema adicional de que, quando você reabre o aplicativo, tudo isso precisa ser revertido e, dependendo da complexidade do aplicativo, muitas coisas devem ser lidas no armazenamento, na memória principal do telefone e assim por diante. Todo esse trabalho extra poderia ter sido evitado se você simplesmente deixasse o aplicativo permanecer no estado "suspenso".
No entanto ...
Em alguns casos (e eles são raros, mas não impossivelmente raros), você deseja matar aplicativos que estão se comportando mal. Os exemplos são (mas não limitados a): aplicativos que lidam com áudio em segundo plano ou serviços assíncronos, como local (onde o aplicativo solicita um local e o iOS deve ir e perguntar onde ele está, por exemplo, disparando o GPS, se necessário) , streaming de vídeo etc.
Eu tive inúmeras instâncias de aplicativos como Lyft, United Airlines e até Twitter, que acabam em um estado de falha (ou simplesmente não funcionam corretamente), ou porque você está em uma rede ruim (o iOS ficou muito ruim em recuperação de algumas redes ruins nas versões 3-4 anteriores) ou a rede simplesmente não responde adequadamente.
Com o tempo, a maioria desses problemas desaparece e o aplicativo começa a funcionar novamente; mas se você realmente precisa que o aplicativo funcione agora , você deve pagar o preço de ter que matá-lo e reiniciá-lo do zero. Você usou mais bateria fazendo isso, mas, ei, você precisava.
E se isso foi confuso, posso lhe dar uma analogia de carro, porque é isso que costumamos fazer o tempo todo.
A analogia do carro
Sei que a tecnologia dos carros avançou e isso não é mais um bom exemplo, mas brinque comigo aqui .
O acionamento do motor de um carro costumava consumir mais combustível do que apenas a marcha lenta. Quando os carros tinham carburadores em vez de injetores, isso era ainda pior; é por isso que desligar o motor quando você para em um sinal vermelho pode teoricamente usar mais combustível do que ficar parado por um minuto. Os carros mais novos têm um mecanismo muito mais eficiente e podem parar o motor, mas permaneçam em um estado semi-iniciado (não vamos entrar muito nos carros aqui).
Você fechando aplicativos, é o equivalente a uma pessoa que desliga o carro em todos os semáforos. Em vez de deixá-lo ocioso até você precisar novamente, normalmente alguns segundos depois.
A analogia não é perfeita, pois a verdade é que carros ociosos ainda usam combustível, enquanto aplicativos suspensos não; no entanto, aos olhos do telefone, eles não estão usando nada relacionado à memória / bateria (desde que não tenham o processamento em segundo plano de nenhum tipo ativo, obviamente).
Você está basicamente desligando o mecanismo toda vez que mata um aplicativo e não deixa que o mecanismo “inteligente” do iOS ocioso do motor cuide dele. Assim, quando a luz ficar verde, basta pressionar o acelerador e o motor está funcionando mais rápido do que se estivesse 100% parado. Iniciar um motor a partir de um estado parado, também usa mais energia do que apenas combustível; você precisa ligar o motor de partida para que o motor possa ser acionado, injetado combustível e faíscas criadas, então ... é muito trabalho nos bastidores. Aplicativos são como motores. :)
fonte
Como uma analogia ... com o seu carro, se você precisar fazer muitas paradas durante o dia e continuar parando e ligando o motor, chegará um momento em que a bateria estará totalmente descarregada. Isso pode acontecer se o tempo de carregamento enquanto você estiver dirigindo entre as paradas não for suficiente para restaurar a enorme quantidade de energia sugada pela bateria toda vez que você liga o motor. Além disso, não é bom para iniciantes e para o consumo total de gás. É por isso que muitos motoristas de caminhão de entrega mantêm o motor em marcha lenta durante suas pequenas paradas.
Essa analogia é IMO semelhante ao mito da economia de memória.
fonte
Apenas lançando uma opinião diferente lá fora, por uma questão de discussão. Esse conceito tem um certo grau de verdade, mas quando você tiver um certo número de aplicativos abertos, provavelmente começará a ver retornos decrescentes ao manter os aplicativos suspensos.
Quanto mais aplicativos você abrir, mais memória RAM será usada, obviamente. Normalmente, cada aplicativo na memória é dividido como a memória que o próprio aplicativo está atualmente usando, a memória que o aplicativo deseja ter em mãos e a memória que o sistema operacional realmente permitiu que o aplicativo usasse, o que fornece a quantidade final de memória que o aplicativo está autorizado a usar. O motivo pelo qual o aplicativo mantém uma parte separada dessa memória como a memória que deseja usar é porque o aplicativo pode precisar aumentar sua pilha, mas não necessariamente quer fazer isso imediatamente, porque é ruim para os coletores de lixo tiver pilhas grandes (pilhas grandes = coleções de lixo mais longas), portanto, o aplicativo reservará uma parte da memória que não está sendo usada no momento, mas que pode ser usada pelo aplicativo exclusivamente se necessário.
Digamos que o sistema operacional permita que meu aplicativo atinja 700mb, e o conjunto de aplicativos reserve 300mb dessa memória para si, deixando 400mb para o meu aplicativo usar se quiser, mas outro aplicativo é aberto e precisa de memória; o sistema operacional examina todos os aplicativos diferentes e decide se é bom extrair alguma memória de outro aplicativo e usá-lo para o novo aplicativo; nesse caso, ele pode decidir tirar 150mb da memória permitida dos aplicativos e fornecê-la ao novo aplicativo , exigindo que a memória seja trocada para permitir que o novo aplicativo seja usado (pense nisso como uma realocação de fundos em uma empresa), quanto mais aplicativos você abrir, mais trabalho o sistema operacional terá para realmente decidir qual memória do aplicativo pode ser desviada para fornecer à nova memória do aplicativo.
Nesse sentido, todo aplicativo que é aberto e suspenso aumenta a complexidade desse processo, tornando-o mais intensivo da CPU e, eventualmente, exigindo potencialmente mais energia da bateria para abrir aplicativos futuros do que a energia economizada ao não fechar outros aplicativos.
Lembre-se de que nada disso leva em consideração que, a menos que você realmente mate um aplicativo, pode haver serviços em segundo plano em execução que consumirão poder de processamento, por exemplo, notificações configuradas para notificá-lo em um cronômetro, etc. Por outro lado, alguns os aplicativos não usam um serviço de segundo plano verdadeiro e usam notificações push de serviços como o firebase, que não exigem que o aplicativo seja aberto a qualquer momento.
Outra coisa a considerar, quanto mais aplicativos você abrir continuamente, mais fragmentada será a memória inicialmente até que o sistema operacional passe e limpe a memória para ficar mais limpa e organizada com mais eficiência, isso também aumenta o poder de processamento e o Quanto mais memória ocupada pelos aplicativos, mais intensivo será esse processo para o seu dispositivo.
Tudo isso para dizer, deixar os aplicativos abertos é mais eficiente, a menos que muitos aplicativos sejam abertos; no entanto, não sei quantos aplicativos precisam ser abertos para chegar a esse limite, se o número existir.
Fontes:
Coletor de lixo SGen para Mono: http://www.mono-project.com/docs/advanced/garbage-collector/sgen/
Visão geral do criador de perfil de memória para aplicativos iOS e Android Xamarin, que mostra como a memória é gerenciada pelo aplicativo (conjunto de trabalho, bytes particulares, memória alocada etc.) https://blog.xamarin.com/say-hello-to -the-xamarin-profiler /
fonte
Versão limpa: é melhor porque o sistema operacional foi projetado para torná-lo melhor a ponto de o usuário querer manter os aplicativos (ou no estado "suspenso") para reunir mais informações sobre suas ações [*] posteriormente se necessário.
Versão mais longa: os aplicativos "suspensos" terão seu estado salvo na memória; assim, quando você desejar iniciá-los, o processo de carregamento de tudo exigirá menos tempo para o procesor e quase nenhum uso da unidade de armazenamento ... isso você não pode saber se seus aplicativos estão fazendo outras coisas em segundo plano, que em muitos casos eles ficam lá coletando dados sobre você.
[*] Para elaborar a coleta de dados de sua parte, os aplicativos armazenados na memória podem ser "suspensos" ou ativos em segundo plano. Você, como proprietário do dispositivo, não pode saber (se você não possui o conhecimento e alguns outros aplicativos para verificar ativamente o uso da CPU) o que esse aplicativo realmente está fazendo. Do ponto de vista da segurança, recomendo que você feche qualquer aplicativo que você não use nos próximos 10 minutos.
PS Esta prática é feita em dispositivos Android, bem como ...
fonte