Skip to content

July 20, 2011 -

14

Multitarefa no Android: Quando sofisticação não implica em satisfação

.

Algo que tem sido bastante visado em dispositivos móveis é a capacidade de executar diferentes programas ao mesmo tempo, a chamada multitarefa. Um aparelho com tal capacidade permite que o usuário alterne entre aplicativos, seja porque o foco precisa ser mudado para uma outra atividade (como ver um e-mail ou SMS que acabou de chegar) ou porque uma tarefa exige um tempo de espera maior (como uma página a ser aberta, um vídeo a ser carregado ou um arquivo a ser baixado) e, enquanto ela é realizada, pode-se aproveitar o tempo para fazer outra coisa, como ler uma notícia de um feed.

A existência desse recurso em um dispositivo móvel tem algumas implicações que podem ser notadas pelo usuário. Mais tarefas sendo executadas ao mesmo tempo implicam em mais memória (RAM) sendo utilizada, mais processamento sendo feito e, como consequência, menor autonomia para o aparelho. Se não bastasse esse ponto negativo, suficientemente crítico para um dispositivo móvel e essencial para um celular, há mais efeitos negativos. Há ainda divisão ou disputa de recursos que são divididos entre vários programas, entre eles: memória RAM, processamento e conexão. Como resultado tem-se:

  • Degradação da experiência de uso do programa principal;
  • Maior tempo para a conclusão de atividades por programas em segundo plano, tanto pela divisão dos recursos quanto pela prioridade menor;
  • Influência de um programa com erro ou problemas de execução no desempenho dos demais.

Uma das formas de se contornar esses problemas é aumentar a capacidade de processamento e de memória RAM disponíveis, a exemplo dos  processadores de 2 cores que disputam o mercado em 2011. Contudo, isso implica no aumento do valor do dispositivo e, novamente, a autonomia do aparelho é comprometida, já que há componentes que utilizam mais energia (embora existam otimizações para o uso de mais de um núcleo em regime de baixo consumo, que podem diminuir o consumo geral) . E se a melhor resposta parece ser aumentar a capacidade da bateria, logo aparece outro fator cada vez mais buscado pelos fabricantes: menor peso e espessura dos aparelhos — como pode ser visto pela disputa para ter o aparelho mais fino do mercado, como a recente batalha entre competidores como LG, Samsung e NEC. Conclusão: a resposta para permitir melhor uso da multitarefa não pode se limitar a mais poder de hardware.

Outro modo de permitir o uso de multitarefa e amenizar seus problemas é melhorar a forma pela qual o sistema operacional gerencia tarefas e  recursos de hardware. Cada sistema operacional móvel impõe restrições e formas de trabalho diferentes que priorizam aspectos como experiência de uso, desempenho, integridade de dados e aplicativos e controle por parte do usuário. Esses aspectos influenciam em questões como:

  • Capacidade do usuário de escolher como fechar um programa ou mantê-lo aberto;
  • Facilidade e velocidade para mudar de um programa outro;
  • Persistência das informações após mudar um de um programa para outro e, posteriormente, voltar para o primeiro;
  • Capacidade de um programa se beneficiar dos recursos de outro, trocando informações;

O que será mostrado neste post é como o Android lida com essas questões, os problemas que ocorrem com sua forma de gerenciamento das tarefas e o que o usuário pode fazer para amenizar alguns desses problemas.

O gerenciamento de tarefas do Android

O Android tem um modo interessante de lidar com a execução de vários aplicativos simultaneamente. O primeiro ponto a ser notado é que um aplicativo é formado por vários componentes. Para exemplificar e simplificar os conceitos do post, os componentes serão resumidos a dois casos: telas do programa e serviço. As telas representam a visão que o usuário tem do programa, ou seja, sua interface. Os serviços são processamentos que podem ser feitos para o programa, ainda que o programa em si não esteja sendo visto pelo usuário. Estes serviços são uma forma diferenciada de execução de uma parte do programa que precisa ser desenvolvida pelo programador para que seu aplicativo continue realizando processamento ainda que a interface não seja exibida.

Há uma hiearquia de níveis de prioridade que atribui a cada aplicativo maior ou menor chance de ser fechado pelo Android em caso de necessidade. Os aplicativos com maior prioridade são aqueles sendo lidados diretamente pelo usuário no momento. Para o sistema operacional, ter uma parte do programa sendo exibida para o usuário é um indicativo de que ele precisa ser mantido em execução — o que irá acontecer caso nenhum erro ocorra. Os outros programas, abertos em outro momento, podem apresentar diferentes estados ou serem encerrados assim que o Android notar a necessidade. Como necessidade pode ser entendido o fato de que os programas com maior prioridade podem precisar de mais memória e, por isso, os programas com menos prioridade serão fechados.

Cada programa que não esteja sob o foco do usuário pode estar em execução em segundo plano (como um serviço), estar temporariamente pausado ou ser totalmente interrompido. O que irá determinar o modo com que esses programas são tratados são a demanda por recursos do programa em primeiro plano, a quantidade de memória disponível e o modo de funcionamento dos próprios aplicativos. Estas características são pesadas para determinar o quão importante cada programa é para o usuário naquele momento.

A variação entre esses estados e a forma de como esses aplicativos foram programados facilitam tarefas como pausar um jogo, ir olhar um e-mail e, posteriormente, retornar ao jogo. Os recursos para criação de programa do Android (presentes no SDK) prevêem a recuperação do estado do programa desde sua última execução e tornam o programa mais ou menos rápido de ser aberto de acordo com seu estado. Programas pausados podem voltar ao estado em que estavam rapidamente, permitindo a continuidade do ponto em que foi parado. Programas totalmente interrompidos podem exigir mais tempo para serem abertos novamente, já que devem refazer todos os passos para funcionar.

Visualização de processos no Android usando o Better Terminal.

Visualização de processos no Android usando o Better Terminal.

Além disso, um programa pode ser executado apenas como um serviço, sem uma interface gráfica, e consumir recursos do telefone (processamento, memória, conexão, etc.) enquanto há outro programa sendo executado em primeiro plano. Por exemplo, é possível ler e-mails enquanto um serviço reproduz uma música ou um download é feito.

Todos esses aspectos criados foram fundamentados em:

  • Não querem que os usuários fechem as aplicações quando tiverem terminado de usá-las. Pela visão da Google, esse padrão de uso não funciona bem em um ambiente móvel, onde o uso tende a envolver o uso rápido de várias aplicações ao longo do dia;
  • Dispositivos móveis não têm área de swap (apesar de existirem exceções), o que restringe o uso de memória;
  • A troca de aplicações em um dispositivo móvel deve ser feita rapidamente porque qualquer demora pode irritar o usuário;
  • Todas as aplicações, sejam elas de terceiros ou da Google, são criadas a partir dos mesmos recursos (APIs).

Por causa da visão da Google sobre multitarefa e das especificidades com que os aplicativos são tratados, o Android apresenta comportamentos que podem fugir do que o usuário espera. Por exemplo, um programa que tenha sido aberto anteriormente e que agora esteja pausado deveria ser mostrado como uma tarefa ativa? Se esse aplicativo pausado não consome processamento e não influencia no desempenho do aparelho, há motivos para dar ao usuário a opção de fechá-lo? Um programa que tenha sido aberto a partir de outro deveria ser considerado um programa sendo executado pelo usuário?

Problemas da multitarefa no Android

Nesta seção serão apresentados alguns dos problemas que ocorrem com o gerenciamento de programas no Android, como adiantado no Review do Nexus S, sob o ponto de vista de um usuário. Algumas decisões, por mais estranhas que sejam, podem ser fundamentas pela forma com a qual o Android trabalha com o ciclo de vida dos aplicativos, mas elas poderiam ser ajustadas para serem mais naturais para o usuário.

A exibição de aplicativos recentemente abertos, não de aplicativos abertos

Exibição das Tarefas Recentes no Gingerbread

Exibição das Tarefas Recentes no Gingerbread

Como visto anteriormente, o Android trabalha de um modo diferenciado com os aplicativos, tratando-os como aplicativo aberto, serviço ou aplicativo interrompido, mas o estado preservado. Apesar de essa forma ser interessante, a Google faz o Android tratar tudo como um aplicativo em uso e, por isso, faz da lista de aplicativos recentemente abertos o seu “gerenciador de tarefas“.

Em smartphones essa forma de agir tira a visão do usuário sobre o que está realmente acontecendo e a liberdade de fechar aquilo que para ele não é mais necessário. Além disso, na lista de aplicativos recentemente abertos até mesmo o aplicativo exibido (que fica em segundo  plano ao mostrar a lista de tarefas recentes) é mostrado, o que não faz sentido.

Exibição das tarefas recentes, no menu à esquerda, no Honeycomb.

Exibição das tarefas recentes, no menu à esquerda, no Honeycomb.

Em tablets o sistema identifica o programa em execução e o remove da lista de aplicativos recentemente abertos. Porém o problema de exibição de aplicativos recentes é ainda maior. A barra de tarefas recentemente usadas mostra aplicativos que foram abertos há horas ou mesmo dias e faz com que a lista fique grande sem necessidade, o que diminui sua utilidade.

Programas abertos a partir de outro não são considerados recentemente abertos

Se ter visualização apenas de aplicativos recentemente abertos já é uma visão limitada das tarefas, o problema é maior pelo fato de nem todas as tarefas executadas aparecerem na lista. Se um programa é aberto por causa da interação do usuário com um outro aplicativo, ele não é considerado um programa recentemente aberto, não importa quanto processamento ele exija ou quanto tempo o usuário o utilize.

Sequência de passos que mostra a falha na exibição de tarefas recentes.

Sequência de passos que mostra a falha na exibição de tarefas recentes. O navegador Web deveria ser exibido na lista de tarefas recentes, na última tela.

Um exemplo disso é abrir um link do Google Reader (ou a partir de qualquer outro programa) para olhar o conteúdo integral de um post. Como o browser é aberto a partir do Google Reader, ele não é considerado um aplicativo recentemente aberto. Com isso, a facilidade de uso de multitarefa cai drasticamente. O usuário poderia deixar a página carregando e realizar outras atividades, mas pode acabar até esquecendo que deixou a página sendo carregada já que não há qualquer indício de que o browser tenha sido aberto para essa finalidade. Caso o usuário se lembre, a abertura do navegador não poderá ser feita pelos aplicativos recentemente abertos. O usuário terá que procurar o ícone do programa na lista de aplicativos ou em algum atalho que tenha criado no desktop.

O problema está presente no Gingerbread e no Honeycomb e ocorre porque o Android reconhece o programa invocado por um outro como sendo algo de caráter temporário, com papel secundário para o usuário. Se esse processamento não pudesse ser continuado quando o aplicativo principal é fechado, esse comportamento faria sentido, mas não é o caso.

A visualização limitada do estado dos programas

No momento de exibir os aplicativos recentemente abertos, ao invés de dar ao usuário a noção exata do que os aplicativos estão executando, o sistema operacional se limita a dar a noção mínima do que poderia oferecer. Neste ponto ao menos há uma melhora significativa entre a versão para smartphones e a versão para tablets.

Gingerbread

Exibição de apps recentemente abertos

Exibição de apps recentemente abertas no Gingerbread.

O Android poderia mostrar para os usuários o estado atual dos aplicativos, mas se limita a mostrar os ícones deles. O que há de errado nisso? Se o usuário deixa uma página carregando e vai para outra tarefa, quando ele abre as tarefas recentemente abertas ele deve querer saber se o carregamento da página foi concluído. Mostrar apenas os ícones exige que o usuário tenha que alternar para o navegador para ver se foi concluído. Se não foi, ele aguardará o restante do carregamento ou voltará para o aplicativo anterior.

O ideal seria mostrar uma miniatura das tarefas. O usuário, ao querer verificar se a página terminou de se carregada, poderia abrir o menu de tarefas e ver, pela miniatura, a situação do carregamento. Isto se aplica a páginas, novos tweets, feeds, e outras atividades que demandam um tempo maior para serem realizadas.

Honeycomb

Exibição de apps recentemente abertas no Gingerbread.

Exibição de apps recentemente abertas no Gingerbread.

No Honeycomb a visualização é um pouco melhor. Ao invés de se limitar a visualizar os ícones são exibidas imagens da última utilização do aplicativo. Apesar da melhoria, o problema de não conseguir saber o estado atual do programa sem abri-lo persiste. Isto, porque a imagem mostrada representa o último estado visto e não o estado atual.

Caso o navegador seja aberto, um endereço seja digitado e, posteriormente, o usuário alterne para um outro aplicativo, a imagem que ficará é a tela inicial do navegador. Por mais que 3 minutos tenham se passado e a página já tenha sido carregada, a tela inicial do navegador na tela inicial será mantida, sem mostrar para o usuário que o conteúdo da página já foi totalmente carregado.

A falta de controle sobre o que é encerrado

Talvez este seja o grande problema do Android e a fonte de outras deficiências. No Android não há uma forma oficial de o usuário fechar um aplicativo a partir do próprio aplicativo. O usuário tem as opções:

  • Torcer para que o desenvolvedor incorpore uma forma de fechamento — O que é difícil e nem sempre possível. E de toda forma, não recomendado, de acordo com a visão de multitarefa da Google;
  • Usar o botão voltar tantas vezes quanto forem necessárias para que o aplicativo chegue ao seu estado original e, possivelmente, esteja em um estado que use menos recursos (por exemplo, sair de uma página em carregamento pelo browser e voltar para a tela inicial, em branco);
  • Alternar para outro aplicativo e esperar que o sistema decida encerrá-lo;
  • Dar 6 3 toques no Gingerbread ou 7 4 no Honeycomb para ter acesso a uma lista escondida de programas e serviços em execução e poder pará-los (aproveitando a sugestão de passos mais curtos sugerida por Guaray Monteiro).
Exibição de serviços em execução nas versões Gingerbread (à esquerda) e Honeycomb (à direita).

Exibição de serviços em execução nas versões Gingerbread (à esquerda) e Honeycomb (à direita).

O que se pode concluir é que o usuário deixa de ter o controle sobre aquilo que executa e o sistema fica encarregado de tomar as decisões. Para piorar, há aplicativos que têm síndrome de zumbi e insistem em voltar à vida ainda que o usuário solicite seu fechamento.

Botão 'Quit' para encerramento do aplicativo.

Botão 'Quit' para encerramento do aplicativo.

Isso ocorre porque o Android deixa a cargo dos desenvolvedores a forma de criar uma opção para encerrar o aplicativo ou as condições que ele tem de fazer atualizações como um serviço. Em um mundo ideal os desenvolvedores deveriam criar essas opções para o usuário e dar o poder de decisão para eles. Na prática não é o que ocorre.

Um péssimo exemplo disso é o TweetDeck. Por mais que o aplicativo ofereça o botão de sair e que o usuário o utilize, não demora muito e serão exibidas notificações de novos tweets recebidos. Se o usuário passar dias sem usar a versão móvel do aplicativo e resolver abri-lo para ver sua timeline, será preciso ver tweets acumulados por dias até poder chegar aos que foram recentemente enviados. Até exista a opção de parar de receber tweets/DMs/replies, mas isso implica em usar o TweetDeck de modo totalmente manual, exigindo que se peça para verificar se há algo novo, mesmo quando o aplicativo está aberto.

Remediando o problema

Os problemas do Android não afetam apenas a experiência de uso pelos usuários, mas também têm efeito no consumo de bateria e no comportamento de alguns aplicativos. O que resta para o usuário é a utilização de aplicativos que tentam lhe dar mais controle da situação.

Task Killers: usuários mal acostumados, pouco informados ou sedentos por controle?

Uso de Task Killer para encerrar apps.

Uso de Task Killer para encerrar apps.

Há diversos artigos (Gizmodo, Life Hacker, Mestre Android, Eu, Android, …) que explicam o conceito de Task Killers e o porquê de seu uso ser e desnecessário. Apesar do uso destes programas ser atribuído a pessoas sem conhecimento do funcionamento do Android e de seu efeito ser mais um placebo do que ter alguma utilidade, não dá para ignorar o fato de cerca de 300.000 instalações da versão gratuita do Advanced Task Killer foram realizadas.

A questão do uso de Task Killers é: os usuários não sabem como o sistema operacional funciona ou eles estão insatisfeitos com a falta de controle que o Android dá a eles? Os desenvolvedores do sistema operacional poderiam notar essa necessidade e criar uma forma já padronizada de controlar os programas.

Por mais que isso esteja ligado ao uso de computadores, a opção poderia ser a de sair de um aplicativo fechando-o completamente ou minimizando-o. O sistema de gerenciamento do Android poderia continuar sendo o mesmo e ainda teria ajuda do usuário para lidar com menos programas do que normalmente ele teria que gerenciar.

Bloqueadores de serviços

WatchDog - Bloqueador de serviços.

WatchDog - Bloqueador de serviços.

Bloqueadores de serviços, como o WatchDog, são a alternativa mais recomendada ao uso de Task Killers. Ao invés de oferecerem o fechamento indiscriminado de tarefas em execução do aparelho, eles fornecem uma forma de impedir que aplicativos com “síndrome de zumbis” voltem a execução e consumam acesso de rede e tempo de processamento.

Esse tipo de aplicativo pode incluir um sistema de análise de processamento e atividade, para fundamentar o bloqueio de serviços. O bloqueio, feito por uma blacklist, dá ao usuário o controle sobre o que ele acha importante que seja sempre atualizado ou não, ainda que o sistema operacional e o aplicativo não ofereçam essa possibilidade.

Outra opção, sugerida por Bremm, é usar o Gemini App Manager, para inibir  aplicativos que o WatchDog não consegue.

Perfect Task Switcher: gerenciando aplicativos ativos

O Perfect Task Switcher, cujo primeiro contato aconteceu pela recomendação do Teki Mobile, até o momento oferece a melhor experiência conseguida para o gerenciamento das tarefas que não foram suspensas. Com o alternador de tarefas dois dos problemas citados podem ser amenizados com facilidade, mas é possível resolver um terceiro conseguindo acesso como root.

Perfect Task Switcher - Visualização de aplicativos abertos no Android.

Perfect Task Switcher - Visualização de aplicativos abertos no Android.

A visualização de aplicativos ativos, contra a de recentes, é conseguida ao utilzar o programa e configurá-lo para exibir os programas que não foram suspensos pelo Android. Com isso é possível configurar o aparelho para mostrar as tarefas abertas sempre que o botão pesquisar for mantido pressionado, criando uma forma prática de acesso à função. A exibição dos aplicativos inclui até aqueles que foram invocados a partir de outros programas.

A falta de controle sobre o que fechar é resolvida pelo fato de existir um botão para encerrar cada tarefa ativa. Assim, o uso não precisa esperar que o Android resolva fechá-lo e nem usar o botão voltar para isso.

Para o problema da visualização do conteúdo dos aplicativos o Perfect Task Switcher só consegue ser efetivo caso o aparelho tenha sido “rooteado”. Como o Android não permite a captura simplificada de screenshots, só a partir de privilégios de super usuário é possível capturar as imagens da tela do aparelho e exibir o conteúdo dos aplicativos em execução.

O Perfect Task Switcher, apesar do nome, não é pefeito. Ele mostra, por exemplo, o Power Control Plus, que é um widget, entre as tarefas em execução. Apesar disso, a noção de multitarefa fica mais próxima da esperada.

Conclusões

O Android trata a execução dos aplicativos com certa sofisticação e, baseando-se em decisões bem fundamentadas, pára ou mantém em funcionamento programas instalados no aparelho. Apesar dessa sofisticação, a experiência de uso do sistema é prejudicada pelo fato de ele retirar a capacidade do usuário de controlar algumas decisões e de deixá-las a cargo dos desenvolvedores ou do próprio sistema.

Alguns dos problemas originados com essas escolhas têm implicações em problemas considerados “crônicos” do Android, como a autonomia. Enquanto a Google não toma as providências necessárias, resta para o usuário a tarefa de encontrar programas de terceiros que amenizem os problemas. Como visto, uma boa alternativa é o uso combinado dos aplicativos de terceiros como o Perfect Task Switcher e o Watch Dog.

Posts Relacionados

  • Pingback: Multitarefa no Android | Linux Ajuda

  • http://rcarvalho.myopenid.com/ Rodrigo Carvalho

    Acho que este artigo peca muito na seguinte frase: “Mais tarefas sendo executadas ao mesmo tempo implicam em mais memória (RAM) sendo utilizada, mais processamento sendo feito e, como consequência, menor autonomia para o aparelho.” O pior de tudo é que o artigo se baseia tudo nesta premissa furada!

    Vamos esclarecer algumas coisas:
    1) Tarefas não são executadas na memória RAM, mas na CPU;
    2) Somente o uso da CPU impacta na autonomia do aparelho.
    3) E o mais importante, aplicativos carregados na memória RAM, não necessariamente estão em execução pela CPU;

    Se você já estudou sistemas operacionais (faculdade, curso técnico ou qualquer outro curso), vai saber que um processo (que é um aplicativo em execução) tem um ciclo de vida. Quando ele não tem nenhuma tarefa para executar, ele fica dormindo na memória RAM sem incomodar a CPU. Por este motivo, a frase está totalmente equivocada.

    Além disso, quem disse que o usuário (comum) quer ter controle sobre o fechamento de um aplicativo?

    Abraço!

    • http://freebird.blog.br Vegetando

      Olá Rodrigo.

      Antes de tudo, é preciso dizer que realmente muitos termos e conceitos são apresentados de forma menos rígida, para permitir um entendimento geral do conteúdo mesmo para quem não tem conhecimento técnico sobre Computadores, mas tem curiosidade sobre o tema. Dito isso, vou tentar responder os pontos questionados.

      > “Acho que este artigo peca muito na seguinte frase: “Mais tarefas sendo executadas ao mesmo tempo implicam em mais memória (RAM) sendo utilizada, mais processamento sendo feito e, como consequência, menor autonomia para o aparelho.” O pior de tudo é que o artigo se baseia tudo nesta premissa furada!

      Vamos esclarecer algumas coisas:
      1) Tarefas não são executadas na memória RAM, mas na CPU;”

      Concordo que as tarefas são executadas pelo processador, mas antes disso acontecer elas são carregadas em memória RAM. Parte dos programas, utilizados para o processamento, pode ir para outras memórias mais rápidas, mas ainda assim, em geral, programas são carregados na mesmória RAM para diminuir o tempo de acesso que existiria entre processador e memória não volátil.

      > “2) Somente o uso da CPU impacta na autonomia do aparelho.”

      Na frase não foi dito o contrário. O que foi dito é que: usar mais programas implica em menor autonomia. Ainda assim, para que os dados da memória RAM não sejam perdidos, há um refresh que gasta energia, por menor que seja a implicação disso no consumo geral do aparelho.

      > “3) E o mais importante, aplicativos carregados na memória RAM, não necessariamente estão em execução pela CPU;

      Se você já estudou sistemas operacionais (faculdade, curso técnico ou qualquer outro curso), vai saber que um processo (que é um aplicativo em execução) tem um ciclo de vida. Quando ele não tem nenhuma tarefa para executar, ele fica dormindo na memória RAM sem incomodar a CPU. Por este motivo, a frase está totalmente equivocada.”

      Concordo com sua afirmação. Nas referências sobre o porquê de não se usar TaskKillers, é explicado que o fato de o programa estar em memória não significa que ele esteja consumindo tempo de processamento. Por isso o usuário não tem que se preocupar em ver tarefas carregadas em memória que não utilizam outros recursos de hardware naquele momento.

      Por outro lado, os serviços que estão utilizando rede e processamento, muitas vezes não estão fazendo isso atendendo uma necessidade do usuário. Eu mesmo não gosto do fato de ficar recebendo Tweets sem ter aberto um cliente do Twitter. Por isso acho que o Android poderia dar para o usuário a opção de escolher quando um serviço pode ficar sendo atualizado em background (como serviço) ou não. Curiosamente, vi que o Windows Phone Mango terá uma opção assim.

      > “Além disso, quem disse que o usuário (comum) quer ter controle sobre o fechamento de um aplicativo?”

      Pode ser que nem todo usuário queira isso, mas não posso afirmar que nenhum quer. Mas considerando que uma das reclamações que mais ouço sobre o Android é sobre a o pouco tempo de autonomia dos aparelhos, ter mais controle sobre serviços que consomem rede e processamento poderia ajudar a diminuir o problema. Há, na maioria dos casos, como diminuir o problema encontrando a configuração de atualização do aplicativo, mas acredito que isso poderia ser muito mais natural com uma opção clara, para o usuário, sobre ele querer ou não que o aplicativo continue sendo executado de algum modo, como o Latitude, Twitter, Foursquare, etc.

      > “Abraço!”

      Como disse, muita coisa é explicada por alto porque o propósito do post facilitar o entendimento. Acredito que, com isso, muitas coisas ficam generalizadas e não atendem bem a algumas definições e conceitos. Agradeço pelas considerações e discussão iniciada, que permitem tornar as coisas mais claras.

      • JOÃO MARCOS DE OLIVEIRA

        Apesar da data do post e da rapidez com que a ciência e a tecnologia caminham, hoje (26/02/14)continua sendo atual, pois o problema continua sem uma solução por parte do Google, talvez porque os desenvolvedores acreditam que o usuário não precise saber de nada, nao precise controlar nada, nao precise ter opcoes, pra que, ele deve ser um burro mesmo, vamos dar a ele um sistema que ele use como nos queremos que ele use e ponto final. Fazendo uma comparacao o mesmo ocorreu e ocorre com o Windows, criaram um sistema bonitinho que com um clique abre um programa, com outro clique se fecha o programa e pronto, o usuario nao deve saber o que foi preciso acontecer para que o programa iniciasse, quando algo da errado o usuario e orientado a reinstalar o Windows. No Android tudo o que precisavamos ter era a opcao de escolher quais apps abrir, quais apps deveriam iniciar junto com o sistema, uma vez aberto ele continuar na memoria RAM ou nao e outra questao, eu tenha um Galaxy Win, quando eu reinicio ele, 2 minutos depois ele esta com 20 a 25 apps ou parte, na memoria, consumindo de 75% a 85% da memoria RAM e quaqndo eu vou em confia bateria tendo que ser carregada 2 vezes ao dia util (tempo que estou acordado)

  • Tulio B.

    O Maemo 5 ainda ganha no quesito multitasking… Acho que se a Nokia tivesse colocado uma bateria condizente com o resto do aparelho… Em sua opinião, qual sistema teria um gerenciamento de energia melhor?

    • http://freebird.blog.br Vegetando

      Estranhei o uso de multitarefa no Android principalmente por ter saído do Maemo 5. Acho que a forma como o Maemo lida com as tarefas é bem melhor. A visualização das tarefas consegue ser bem aproveitada até para lidar com abas do browser e algumas notificações. Até mesmo o Symbian está com um sistema mais interessante.

      Sinceramente, é possível até que o Android (ironicamente) gerencie melhor as tarefas para a autonomia, considerando que o aplicatico entra em suspensão quando não é usado. O problema é que muitos desenvolvedores iniciam/usam serviços indiscriminadamente.

      Achei o gerenciamento do WinPhone 7.5 (http://mynokiablog.com/2011/08/05/video-windows-phone-multitasking-explained/) interessante, pelo fato de permitir escolher, pela interface do sistema operacional, se um aplicativo pode ficar em execução em segundo plano ou não.

      Não vi detalhes sobre como o iOS, Symbian e WebOS lidam com as tarefas, apesar de já ter visto indícios de que os dois últimos têm um bom gerenciamento das tarefas.

      No fim, acho que prefiro a forma como o Maemo 5 gerencia. O simples fato de saber o que está em execução já ajuda a manter apenas aquilo que quero.

      Quanto tempo tem durado uma carga completa no seu N900?

  • Diogo

    Comigo ocorre que quando estou fazendo um download e decido utilizar um outro aplicativo (dependendo do nível de necessidade de processamento acho) o meu navegador se encerra ocasionando na perda do download. Já testei vários navegadores e todos possuem o mesmo problema (somente uns duram mais tempo que outros). Já tentei procurar por gerenciadores de download, mas eles não funcionam com servidores de arquivos (rapidshare, etc…), comecei a utilizar gerenciadores de processos com esperança de algum controle sobre finalização (ou não-finalização) sobre eles e experienciei tudo o que fala o artigo. Alguma dica pra mim? …e deixo um elogio para o artigo!Obrigado.

    SAMSUNG GALAXY S
    Android 2.33 – sem root

    • http://freebird.blog.br Vegetando

      Olá Diogo,

      Teoricamente, o download do arquivo deveria ser executado separadamente e de modo independente do navegador. Por isso, o que acho que pode acontecer é o download não ser mantido porque houve um problema com a conexão. Digo isso, também, porque várias vezes noto problemas com download, seja de arquivos baixados a partir do navegador ou de aplicativos do Android Market.

      Quando você tenta fazer esses downloads, a conexão usada é 3G ou Wi-Fi? Talvez seu telefone esteja configurado para desligar o Wi-Fi quando a tela do aparelho não está ligada, para economizar bateria.

      • Diogo

        Estou utilizando rede Wi-Fi e mantenho a opção de nunca desligar a rede mesmo com a tela desligada. Então acho que ocorre uma disputa por banda da internet e se o sinal oscila um pouco eu sou chutado pelo servidor do download. Estive observando isso ontem durante a noite ao fazer alguns downloads: se eu abandonar o telefone fazendo o download tudo fica OK (tirando o tédio), mas em uma das tentativas fui querer passear pelo Android Market e meu download falhou. Se o problema for esse, será que há uma maneira de definir prioridades de banda para os aplicativos?
        Obrigado.

        • http://freebird.blog.br Vegetando

          Hum, parece mesmo ser um problema de disputa por recursos.

          Provavelmente o aplicativo usado concorrentemente com o download já cause o problema da falha do download, mas você tem forçado o fechamento também dos demais? Se eles não estiverem sendo executados como serviço, é provável que não gerem problema, mas pode valer a tentativa.

  • Racing

    Estou quebrando a Kbeça comprei um galaxy ace para acessar o programa da empresa qual trabalho funciona perfeito, porem não ha como minimizar e se fico alguns minutos sem mexer ele fecha o programa, ha alguma coisa que possa fazer para ele ficar sempre atualizando a pagina mesmo em tela de descanso??? vlw
     

    • http://freebird.blog.br Vegetando

      Olá,

      Por padrão o Android procura manter os programas usados em memória por quanto tempo for possível. Se ele está fechando o aplicativo que você quer manter, é porque há outros abertos e o aparelho tem pouca memória disponível.

      Não sei como manter um programa aberto o tempo inteiro (além de mantê-lo ativo, sem minimizar). O que você pode fazer é usar o gerenciador de tarefas do Android para fechar os outros aplicativos que estão ativos antes de abrir o da empresa. Com isso, você garante exista mais memória disponível e pode alternar para algum outro que seja necessário.

      Pode ser que o programa da empresa ainda seja fechado, mas pelo menos aumenta a chance de mantê-lo aberto.

      Uma possibilidade é que o programa da empresa esteja funcionando incorretamente ou usando mais recursos do que o que seria necessário. Isso pode levar ao fechamento dele.

  • lucas viana

    Estou com um problema, Tenho um Samsung Nexus e sempre que saio de um jogo sem querer ele fica aberto (normal) e então eu volto para o jogo e então ele se reinicia, eu mesmo marquei para que todo aplicativo se fechasse assim que minizado, porém e atualizei o nexus para versão 4.1 android, ele sumiu essa opção das configurações, como faço para manter o jogo aberto e que volte do mesmo lugar em que eu parei????????????

  • diegocop

    Criei um app Radio Online que faz stream de mp3, e o que ocorre é q quando por algum motivo perde-se a conexão com a internet , o app continua tocando o mp3 porém o app começa a consumir 100% da cpu…tendo em vista que ,a prior, como não há erro de progrmação, gostaria de saber se isto está relacionado a multitarefa do android.