Na compilação do Developer Preview, você poderá ver o estado suspenso em ação abrindo o novo Gerenciador de Tarefas após iniciar dois aplicativos que acompanham a compilação, como o Stocks, News ou Weather. Observe que a utilização da CPU aparece como 0% porque mesmo que esses aplicativos estejam na memória, eles estão suspensos e não podem impactar negativamente a vida útil da bateria nem o desempenho.
Os aplicativos estilo Metro ficam suspensos em segundo plano
Realizando atividades de segundo plano
Como já discutimos, os desenvolvedores precisam pensar sobre como um trabalho realizado anteriormente em segundo plano ainda pode ser executado sem impactar a vida útil da bateria. É fácil solicitar a multitarefa e habilitá-la, mas a parte negativa disso é que, como todos os aplicativos sempre ficam executando tarefas em segundo plano, uma vida útil longa da bateria (ou maior) nunca será alcançada. No mundo móvel e constantemente conectado dos laptops, isso é muitíssimo importante. Portanto, com o Windows 8 e o WinRT, criamos novas APIs para o processamento de aplicativos estilo Metro em segundo plano.
Repito: os seus aplicativos da área de trabalho continuarão sendo executados exatamente como antes, mas também continuarão afetando a vida útil da bateria como fazem hoje (embora terão alguns aperfeiçoamentos sobre os quais falaremos abaixo).
Decidimos atingir um equilíbrio entre a habilitação dos tipos de recursos de aplicativos avançados e da multitarefa que as pessoas esperam no Windows e o cuidado na utilização dos recursos. Para tanto, listamos um conjunto de cenários principais que desejávamos habilitar e resolvemos alcançar cada um deles com a máxima economia de recursos possível. O resultado foi um conjunto de APIs multitarefas em segundo plano que permitem aos aplicativos concluir uma ação em segundo plano economizando recursos e energia, além de permitirem aos desenvolvedores se concentrar no que desejam que o aplicativo faça sem a necessidade de fazer vários trabalhos extras.
Optamos por uma abordagem centrada no cenário para permitir as tarefas mais comuns que os aplicativos precisariam realizar em segundo plano. Veja o que habilitamos em segundo plano para os aplicativos estilo Metro no WinRT:
Executar música
Baixar um arquivo de um site ou carregá-lo para o site
Manter os mosaicos dinâmicos ativos com conteúdo atualizado
Imprimir
Receber uma chamada de VoIP
Receber mensagem instantânea
Receber email
Compartilhar conteúdo (como carregar fotos para o Facebook)
Sincronizar conteúdo com um dispositivo com cabo (como a sincronização de fotos)
Esse conjunto de cenários é baseado em padrões comuns usados por desenvolvedores e padrões comuns aguardados por nós. Alguns desses cenários acabam usando o mesmo affordance de plataforma, então, vamos passear por cada um deles para que você possa entender o contexto e a força do Windows 8:
Cenário
Descrição
Download ou carregamento em segundo plano
O acesso e o armazenamento de conteúdo na Internet é um cenário muito comum dos aplicativos. Desejamos que o conteúdo mais novo esteja sempre carregado assim que você voltar a usar um aplicativo. Isso será especialmente útil nos aplicativos de revista ou notícias. Os aplicativos podem usar a nova API de transferência em segundo plano para realizar carregamentos e downloads em segundo plano. Essa API é o que chamamos de “totalmente mediada", o que significa que o próprio sistema operacional realiza o carregamento/download. Isso tira o código do aplicativo de cena e ajuda a maximizar a vida útil da bateria.
Áudio em segundo plano
Continuamos desejando que você possa fazer mais de uma coisa ao mesmo tempo, especialmente se uma delas for apenas ouvir música. Qualquer aplicativo de mídia ou de comunicação pode executar áudio em segundo plano. Para maximizar a eficiência, suspendemos o aplicativo quando você pausar o áudio.
Compartilhamento
Se o seu aplicativo estiver no meio de um envio de conteúdo para um serviço de nuvem, com o uso do botão Compartilhar, ele poderá concluir a operação em segundo plano.
Aplicativos com tela de bloqueio
Os aplicativos com tela de bloqueio normalmente precisam emitir notificação com as últimas informações e isso pode acontecer a qualquer momento, mesmo quando você não estiver usando o aplicativo. Os exemplos mais comuns são os aplicativos de email, VoIP e mensagens instantâneas. Os aplicativos com tela de bloqueio podem transmitir as notificação e sincronizar os seus dados mesmo em segundo plano, com o uso da bateria ou quando a tela estiver bloqueada.
Imprimir
Você pode imprimir documentos mesmo que o aplicativo de impressão esteja em segundo plano.
Sincronização do dispositivo
Você pode sincronizar o conteúdo entre um dispositivo conectado (como uma câmera) e o seu PC mesmo que o aplicativo não esteja aparecendo na tela.
Mosaicos dinâmicos com o Serviço de notificação do Windows
Os aplicativos podem dar a impressão de estarem sempre em execução (mesmo que estejam suspensos) com o envio de notificações por push para o seu PC com o Windows 8 a fim de fornecer o conteúdo mais novo para o mosaico dinâmico do aplicativo.
Notificações agendadas
Os aplicativos podem notificá-lo de um evento em um determinado horário atualizando um mosaico em um horário específico (imaginemos os compromissos de calendário) ou exibindo uma notificação via pop-up na área de trabalho lembrando que você precisa fazer algo antes de sair do escritório. Esses eventos são agendados pelo aplicativo, mas o Windows é responsável por entregar a notificação, o que ajuda a minimizar o impacto na bateria.
Tarefas em segundo plano
Os aplicativos poderão executar código quando ocorrerem determinados eventos, como em um intervalo periódico ou quando você entrar no Windows ou em um serviço de mensagens instantâneas, por exemplo. Os aplicativos com tela de bloqueio podem executar código a cada 15 minutos, mas aqueles sem tela de bloqueio podem executar código a cada 15 minutos, contanto que o dispositivo esteja conectado a uma fonte A/C.
Computadores habilitados para suspensão e o modo em espera conectado
Quando o Windows 8 for lançado, haverá uma gama de PCs disponíveis maior do que nunca. Muitos deles terão opções de energia semelhantes àqueles que executam o Windows 7 hoje. Além do desligamento completo, eles poderão entrar no estado de "suspensão" tanto voluntariamente ou após um período de inatividade. Durante a suspensão, toda a atividade do sistema fica totalmente suspensa.
Execução de aplicativos em PCs habilitados para a suspensão (configurações padrão)
O PC fica ocioso exatamente antes da suspensão. O gráfico acima mostra como os aplicativos da área de trabalho continuam em execução assim como ocorre nas versões anteriores do Windows, enquanto os aplicativos estilo Metro são executados na forma gerenciada descrita por mim. Quando o PC é suspenso, os aplicativos da área de trabalho e estilo Metro ficam totalmente suspensos. Isso é ótimo para a vida útil da bateria, pois quando o computador fica suspenso, ele consome muito pouca energia. No entanto, isso não é tão bom para a atualização de dados porque quando o computador está suspenso, ele não recebe atualizações de mosaicos dinâmicos, não baixa emails nem emite alertas com alarmes ou outras notificações.
Como Pat abordou em sua postagem, habilitamos um novo estado de energia parecido com o dos smartphones para uma nova classe de PCs que raramente são desligados completamente. Normalmente baseados em arquiteturas Soc ("sistema em um chip"), esses PCs são interessantes porque em vez de serem desligados em períodos de inatividade, eles entram em um estado de consumo de energia muito baixo e continuam em execução. Esse novo estado é o modo em espera conectado. Ele permite alguns ótimos cenários de conexão, como sempre ficar com os emails atualizados e receber mensagens instantâneas ou chamadas telefônicas, permitindo uma ótima economia da vida útil da bateria. O gráfico abaixo mostra o comportamento dos aplicativos da área de trabalho e estilo Metro durante o modo em espera conectado. Para que isso funcionasse de forma realmente eficiente, porém, tivemos de considerar tanto os aplicativos estilo Metro (que, como vimos antes, podemos garantir que são econômicos em termos de recursos de sistema), quanto os aplicativos da área de trabalho, que representaram um desafio ainda maior porque foram projetados por anos para ter total acesso aos recursos de sistema (sendo executados em primeiro ou segundo plano) ou nenhum acesso (durante a suspensão do PC).
Execução de aplicativos em PCs com o modo em espera conectado
Para solucionar essa questão, adicionamos um novo componente ao Windows 8 chamado "Moderador de atividades da área de trabalho", que somente é executado nessas novas plataformas habilitadas para o modo em espera conectado. Esse componente foi criado para ajudar a reduzir a utilização de recursos pelos aplicativos da área de trabalho quando o dispositivo entra no modo em espera conectado. Se permitíssemos que os aplicativos continuassem sendo executados de forma ilimitada nesse modo de baixo consumo de energia, a bateria do PC acabaria mais rapidamente. Em vez disso, suspendemos os aplicativos da área de trabalho, interrompemos o uso de seus recursos e maximizamos a vida útil da bateria. Do ponto de vista dos aplicativos, parecerá que o PC simplesmente foi colocado em suspensão. Quando o PC sai do estado em espera conectado, o aplicativo será retomado como se o PC tivesse saído do estado de suspensão.
Entretanto, na verdade há vários componentes no sistema necessários para o modo em espera conectado que não podemos suspender. Eles incluem os drivers, alguns serviços de terceiros e de caixa de entrada e, obviamente, os aplicativos estilo Metro que usam os recursos de segundo plano mencionados anteriormente. Muitos deles permitem funcionalidades como resposta à entrada do usuário quando ele volta ao dispositivo ou fornecem funcionalidade de rede. Habilitamos a execução deles no modo em espera conectado após uma avaliação cuidadosa para garantir que eles não causassem um impacto significativo na vida útil da bateria. Além disso, há um conjunto de processos que precisam ser executados em resposta a atividade no sistema. Esses processos são controlados para serem executados somente por curtos períodos de tempo, até que uma atividade em segundo plano seja iniciada, quando, então, podem ser executados livremente. Um ótimo exemplo disso é um programa antivírus, que está sempre fazendo verificações em resposta a atividades no sistema. Quando há alguma atividade ocorrendo em segundo plano, como o recebimento de um email via affordances em segundo plano, o antivírus pode ser executado livremente durante o processo. Durante a maior parte do tempo em que não ocorre nenhuma atividade de rede de entrada, há muito pouca atividade, portanto, esses componentes são controlados para que minimizar seu impacto na vida útil da bateria.
Resumo
Como você pode ver, investimos muito na engenharia do Windows 8 para que ele fosse ótimo para a vida útil da bateria. Projetamos o novo modelo de aplicativo para proporcionar uma vida útil da bateria longa e constante, permitindo, ao mesmo tempo, experiências de conexão. Os aplicativos que foram projetados para o Windows 7 continuarão funcionando como sempre, sem nenhuma alteração em seu comportamento, e os novos aplicativos estilo Metro podem ser desenvolvidos para permitir novas experiências de conexão que funcionem de forma a economizar energia, usufruindo a infraestrutura de segundo plano oferecida pelo sistema operacional.
-- Sharif Farag e Ben Srour