Bom pessoal, hoje escrevo o artigo em resposta a algumas dúvidas que vem surgindo.

 

Seria o início de uma fragmentação enorme do Windows Phone?

O que preciso fazer?

Devo pensar nesses celulares mais simples?

Em caso de dúvidas mais teóricas e muitas vezes mais filosóficas, sugiro conversarmos no www.rodolphomarques.com . Dê uma olhada nas colunas mensais que escrevo sobre Windows Phone lá, minha opinião, as informações que posso passar, e aí batemos um papo sobre isso. Aqui, nossa ideia será saber como fazer e o que muda.

Apenas uma rápida afirmação: SIM, você DEVE considerar esses telefones. Seja por termos um Nokia barato na jogada, o que deve massificar muito o uso, ou pelo fato de que esses telefones entrarão com tudo em mercados como China e Brasil, fato é, não desconsidere o fato de que aparelhos com 256MB existem. Você vai agradecer por pensar nisso!



O desenvolvimento para esses aparelhos foi adicionado no SDK 7.1.1 , o qual foi lançado em fevereiro. O Thiago escreveu um post sobre o que esse update contém. Clique aqui e leia o post.

 

 

Para nós, o que importa é: você quer que sua aplicação continue executando em qualquer Windows Phone que exista. Quanto mais gente tiver acesso ao seu app, melhor não?
Então as dúvidas são:


-Tendo um app já publicado, como ter certeza que ele funcionará nos novos aparelhos?

 

Vamos responder cada uma delas. Sempre lembrando, aqui estamos tratando de aplicativos XAML. Não entraremos em jogos. O link para saber mais sobre XNA é esse aqui

Se você já tem uma aplicação no Marketplace, você precisa

- Testar se sua aplicação não passa do limite de 90MB.
Sua app não pode usar mais do que esse valor, do contrário, ela não estará disponível para uso nesses aparelhos.
Para isso, você pode verificar usando o "Performance Analysis" no Visual Studio e testar seu aplicativo. Veja as duas imagens abaixo que mostram como acessar essa opção e executar seu aplicativo testando a memória utilizada pela mesma.

 

 

 


Dessa forma você pode entender o uso de memória, CPU, durante todo o ciclo da sua aplicação. Isso é bacana e bastante recomendado, para entender onde estão os pontos críticos, fazer um ajuste fino ou qualquer coisa que possa ajudar a experiência do usuário.

 

 

Uma forma fácil e direta para fazer esse teste dos 90MB é usar o MarketPlace Test Kit (botão direito em cima do projeto, Open Marketplace Test Kit). Essa tool fará os testes automatizados e irá informar se sua aplicação está ok quanto ao pico de memória.

 

 

 

-Validar cada chamada dos Background Agents e os bloquear em dispositivos com 256 MB

Em aparelhos como o Lumia 610 não é permitido o uso de Background Agents. Aliás, é a ÚNICA feature de desenvolvimento que não está habilitada para aparelhos 256. Então é o único ponto que realmente exige atenção. Caso você não os use, parabéns, só checar consumo de memória e seguir adiante. 
Sobre agentes, estamos falando tanto das tasks "periodic" quanto "resource intensive". Então, caso sua aplicação as use, seja para fazer update de tile, sincronização de dados, ou qualquer outro uso, você precisa remover o registro desses agentes nos aparelhos com 256MB. "Mas Rodo, eu quero poder continuar utilizando o recurso em todos os outros aparelhos MAS TAMBÉM disponibilizar meu app aos de 256MB"
É aqui que entra o ApplicationWorkingSetLimit, uma nova propriedade que, passada como parâmetro ao método DeviceExtendedProperties.GetValue entregará a quantidade de memória disponível e dará ao desenvolvedor opções de tratamento diferenciadas em cada caso.
No exemplo do Background Agents, iremos os registrar apenas caso estejamos trabalhando com aparelhos de 512MB.

 
 long result =
(long)DeviceExtendedProperties.GetValue("ApplicationWorkingSetLimit");

Caso o resultado acima seja menos do que 90MB (94371840), estamos falando de um aparelho 256MB. É necessário então não registrar agentes e , claro, importante tentar minimizar o uso de memória. Como já sabemos que nosso aplicativo executou o test kit e passou, apenas vamos adicionar código para registrar o agente somente em caso de aparelhos com 512MB:

  1:             Int64 ram = (Int64)DeviceExtendedProperties.GetValue("ApplicationWorkingSetLimit");
  2: 
  3:             if (ram < 94371840L)
  4:             {
  5:                 string textoAoUsuario = "Não é possivel registrar o Agente. Telefone não é compatível";
  6:             }
  7:             else
  8:                 RegistrarAgente();

Lembrando ainda que o telefone pode não ter sido atualizado. nesse caso a chamada acima gerará uma exceção, por conta do uso do ApplicationWorkingSetLimit. Um Try catch cai bem!


Caso você já tenha sua app, só precisa pensar nisso!

E caso esteja escrevendo um novo aplicativo, comece pensando nas duas questões acima.

Nos dois casos, mas principalmente quando for escever um novo aplicativo (onde ainda não tem a chance de fazer a execução do testkit), lembre..

-OTIMIZAR MEMÓRIA!
Para otimizar memória, lembre:
-Cuidados com uso de imagens, áudio, transições (alguns controles são realmente pesados).
-quando usar lista de dados, pense em virtualização e/ou melhores forma de utilização. não tente carregar uma longa lista toda de uma vez, trazendo muitos objetos do server ao telefone.
-teste, teste, teste. Temos acesso ao novo emulador de 256MB, caso não tenha um telefone para testes. Use o performance analysis, test kit.
 E, caso queira ler mais sobre o assunto performance, um link bom é esse aqui


Por fim, você ainda tema  chance de explicitamente optar por não distribuir seu aplicativo a esses novos aparelhos.
Para restringir esse seu aplicativo aos telefones como o Lumia 610 (o usuário será informado da restrição) é simples:

Vá ao seu arquivo WMAppManifest.xml(estará localizado no seu projeto Windows Phone, pasta Properties). Adicione, logo após a tag "Capabilities" o seguinte código:

  1: <Capability Name="ID_CAP_ISV_CAMERA" />
  2:       <Capability Name="ID_CAP_CONTACTS" />
  3:       <Capability Name="ID_CAP_APPOINTMENTS" />
  4:     </Capabilities>
  5:       <Requirements>
  6:           <Requirement Name="ID_REQ_MEMORY_90" />
  7:       </Requirements>
  8:     <Tasks>
  9:       <DefaultTask Name="_default" NavigationPage="MainPage.xaml" />


A TAG requirements, localizada entre as linhas 5 a 7 é o que é necessário para informar que seu aplicativo não estará disponível para aparelhos mais simples.


Bom, é isso. Lembre que, excluindo os Background Agents, o resto é apenas práticas de performance, que farão bem ao seu aplicativo em QUALQUER cenário. seus usuários agradecerão, com certeza.


E, se querem uma dica, não optem por bloquear seu aplicativo em dispositivos 256MB. O trabalho para adaptar, caso necessário, é pouco.. e valerá a pena!

 

 

 

 

 

Introdução
No último dia 27/02/2012 foi anunciado pela equipe de Windows Phone uma grande novidade, o suporte a dispositivos de baixo custo, sendo que o primeiro aparealho anunciado foi o Nokia Lumia 610. A ideia principal é conseguir ofecere a plataforma do Windows Phone em grandes mercados em crescimento, como China, Costa Rica, Israel,por exemplo, o que significa uma possibilidade de 60% de mercado para o Windows Phone.

image

Nokia Lumia 610

Novos Aparelhos
Como citamos, o Nokia Lumia 610 foi apenas o primeiro aparelho apresentado, mas podem esperar que muitos outros vão surgir, inclusive novas marcas. Algumas marcas que irão lançar dispositivos de baixo custo são: Acer, HTC, LG, Nokia, Samsung, Toshiba e ZTE.

Tenho certeza que estão se preocupando o que muda no Windows Phone para suportar esses novos aparelhos, correto?

A equipe de engenharia do Windows Phone tem trabalhado duro, para sempre oferecer uma plataforma ainda mais robusta, com grande experiência para os usuários, e isso não será diferente nesses novos dispositivos pois diversas otimizações foram realizadas no sistema operacional, como por exemplo, um suporte otimizado a paginação de dados em memória par que possa utilizar, automaticamente, a memória física do dispositivo para alguns armazenamento de informações. Com isso temos a garantia de compatibilidade com a grande maioria das aplicações que já estão publicadas no marketplace.

Vale lembrar que as grandes diferenças desses novos aparelhos são o processador de menor custo – Qualcomm 7x27a – e a quantidade de memória reduzida para 256MB.

Update do SDK
Uma novidade que também foi anunciada no mesmo dia, foi uma atualização no Windows Phone SDK, o chamado Windows Phone SDK 7.1.1 Update, que dará acesso ao emulador de aparelhos com 256MB, permitindo que sejam realizados testes das suas aplicações.

Um ponto importante é que até o momento, essa atualização do SDK trata-se de um Technical Preview, ou seja, ainda não é a versão final e pode sofrer atualizações até sua versão final. Além disso ela NÃO inclui uma licença “go live”, isso significa que ainda não é permitido publicar aplicações desenvolvidas com este SDK.

Então, caso queira realizar seus teste, baixe já o Windows Phone SDK 7.1.1 Update – CTP.

O que há de novo no SDK?
Resumidamente, as novidades do Windows Phone SDK 7.1.1 Update – CTP são as seguintes:

  • Detectar Memória de Trabalho de Aplicação
    Foi adicionado um novo valor de propriedade de dispositivo, ApplicationWorkingSetLimit, que pode ser utilizado para detectar que a aplicação está sendo executada em um dispositivo de 256MB.
  • Emulador 256MB
    Como já foi dito anteriormente o emulador de Windows Phone no SDK foi atualizado para permitir que sejam simulados dispositivos de 256MB.
  • Framework XNA
    Os dispositivos com 256MB oferecem suporte total a XNA, no entanto ajustes de performance podem ser necessárias nas aplicações.
  • Backgroun Agents
    Background Agents, de maneira geral, não são suportados em dispositivos com 256MB.
  • Manifesto de Aplicação
    Apesar de os disposivitos 256MB oferecerem uma grande possibilidade de crescimento de mercado, pode ser que por algum motivo você não queira que sua aplicação seja distribuida neste tipo de dispositivo. Sendo assim, é possível definir no manifesto de sua aplicação que ela não pode ser executada em dispositivos com 256MB.
  • Publicidade
    Utilizando o Microsoft Advertising SDK for Windows Phone, é possível ganhar dinheiro com suas aplicações e jogos por meio de propagandas fornecidas pelo Microsoft Advertising. Foi disponibilizado um novo SDK para que seja utilizado em suas aplicações.

Conclusão
O lançamento dos novos dispositivos é uma grande oportunidade que o Windows Phone possui para ganhar uma boa fatia do mercado existente, pois oferecerá uma quantidade maior de dispositivos e o mais importante, com preços atrativos e competitivos.

É claro que para isso as aplicações precisarão estar preparadas para isso. Por isso nos próximos artigos iremos abordar como preparar nosso código para os dispositivos de 256MB. Até a próxima…