Introdução
Conforme já abordamos neste artigo, o modelo de execução do Windows Phone 7 permite que apenas uma aplicação seja executada por vez, ou seja, no momento em que o usuário navega para fora de sua aplicação ela é desativada e possibilita o tombstone. Porém já abordamos no artigo citado anteriormente, que é possível controlar essa desativação e reativação da aplicação, salvando o estado da página em que o usuário se encontra. Nosso objetivo será mostrar como é possível realizar esse controle. Criando a aplicação inicial Para que seja possível demonstrar o recurso de restauração de Page State, vamos inicialmente criar uma aplicação simples. Para isso siga os seguintes passos:

  • Crie uma aplicação do tipo Windows Phone Application;
  • Adicione ao seu ContentPanel, os seguintes controles, com suas respectivas configurações:
    •  TextBlock
      • Text="Nome"
      • Margin="12, 9, 0, 0"
    • TextBox
      • x:Name="txtNome"
    • TextBlock
      • Text="Data de saída"
      • Margin="12, 9, 0, 0"
    • TextBlock
      • x:Name="lblData"
      • Margin="12, 9, 0, 0"
  • Seu xaml deve estar semelhante a este:
<stackpanel x:name="TitlePanel" grid.row="0" margin="12,17,0,28">
    <TextBlock x:Name="ApplicationTitle" Text="MY APPLICATION"
                    Style="{StaticResource PhoneTextNormalStyle}"/>
    <TextBlock x:Name="PageTitle" Text="page name"
                    Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/>
</stackpanel>
<!--ContentPanel - place additional content here-->
<stackpanel x:name="ContentPanel" grid.row="1" margin="12,0,12,0">
    <TextBlock Text="Nome" Margin="12,9,0,0" />
    <TextBox x:Name="txtNome" />
    <TextBlock Text="Data de saída" Margin="12,9,0,0" />
    <TextBlock x:Name="lblData" Margin="12,9,0,0" />
</stackpanel>

Feito isso já podemos testar nosso aplicativo. Para isso pressione F5.
Com sua aplicação devidamente inicializada no emulador, preencha o campo Nome e clique no botão Start.

Fig1.png

Clique no botão Back. Como poderá perceber, seu nome não estará mais preenchido. Lembrando que isso deve-se ao fato de que no momento em que clicamos no botão Start, nossa aplicação foi desativada pelo Windows Phone.

Salvando o estado da página
Para que possamos resolver o problema apresentado e dar a impressão ao nosso usuário de que nossa aplicação não foi desativada, será necessário implementarmos o armazenamento do estado de página, ou Page State.

Antes de apresentarmos o código para a resolução do problema, devemos entender qual o padrão que deveremos utilizar.
A classe PhoneApplicationPage possui dois métodos muito importantes para nós, o OnNavigateFrom e o OnNavigateTo. Basicamente o que teremos que fazer é sobrescrevê-los, ou seja, realizar um override e implementar o código para salvar e recuperar o estado da página, respectivamente.

Vamos colocar a mão na massa e resolver nosso problema:

  • Abra o código da sua página e declare uma variável do tipo bool, com valor inicial false; bool novaInstancia = false;     
    bool novaInstancia = false;
  • No construtor na classe defina o valor da sua variável para true. Com isso iremos controlar se é a primeira vez que a página está sendo exibida, ou seja, a aplicação acabou de ser aberta, ou se o usuário está retornando à esta página pois estava navegando pela usa aplicação;
            
    // Constructor
    public MainPage()
    {
        InitializeComponent();
    
        novaInstancia = true;
    } 
               
  •  Sobrescreva o método OnNavigateFrom a fim de salvar o estado de sua página;
               
  • Sobrescreva o método OnNavigateTo a fim de restaurar o estado de sua página;
               

Pronto, agora teste o aplicativo novamente, seguindo os passos citados anteriormente. Perceba que agora, ao retornarmos à aplicação a nossa página já exibe o nome preenchido e a data e hora em que saímos da página.

Fig2.png

Conclusão
Como pudemos perceber, a implementação do nosso código é extremamente simples e a desativação e reativação de nossa aplicação torna-se imperceptível para o usuário, basta seguirmos as best practices de desenvolvimento. Nos próximos artigos irei abordar como podemos criar métodos de auxílio para facilitar o processo de gerenciamento do estado da página. Até a próxima...

Categorias: artigos
Tags:

Introdução
Nas aplicações que trabalhamos atualmente, sejam elas Windows Applications, Web Applications, ou qualquer outro tipo de aplicação sabemos que sempre temos que nos preocupar com o modelo de execução da aplicação, ou seja, de que maneira ela é executada no ambiente, qual seu comportamento e pré-requisitos, cuidados e devemos ter e seu respectivo ciclo de vida.

Com o desenvolvimento para Windows Phone não é diferente. É importante que compreendamos alguns conceitos e características importantes para que possamos obter o máximo dos recursos oferecidos, proporcionando assim um tempo de resposta satisfatório aos nossos clientes.

A primeira grande característica do Windows Phone é que apenas uma aplicação é executada de cada vez. Sei que muitos podem estranhar essa características, pois estão acostumados com as versões anteriores do Windows Mobile, onde múltiplas tarefas podem ser executadas simultaneamente. No entanto todos nós sabemos que com o tempo isso vai acarretando um aumento de consumo dos recursos do celular e o mesmo vai ficando cada vez mais lento. Mas uma coisa podemos ficar tranquilos, caso a aplicação seja bem escrita e siga as recomendações, o usuário poderá estar com um aplicativo aberto, navegar até outro aplicativo, utilizar os botões de navegação para retornar à primeira aplicação e nada será perdido, pois é possível manter o estado das aplicações.

Este gerenciamento de estado é possível pois ao solicitar a abertura de uma aplicação o Windows Phone realiza a ativação e desativação dinâmica das aplicações, disponibilizando ao desenvolvedor uma série de eventos como resposta as alterações de estado da aplicação. Como dissemos anteriormente, caso o desenvolvedor crie seu código adequadamente, tratando os eventos oferecidos pelo Windows Phone será possível salvar as informações da aplicação para que ao retornar novamente à ela, dê-se a impressão de que a aplicação continuou rodando.

Terminologia
Quando se trata do modelo de execução de aplicações Windows Phone é comum nos depararmos com alguns termos e é importante que saibamos o que cada um deles significa:

  • Tombstoning: Procedimento do sistema operacional responsável por encerrar o processo de uma aplicação quando o usuário sai da aplicação. O sistema operacional mantém informações sobre o estado da aplicação. Caso o usuário retorne à aplicação o sistema operacional repassa essas informações à aplicação.
  • Page state: O estado visual de uma página da aplicação. Responsável por gerenciar o conteúdo dos controles, como o texto de um TextBox por exemplo. Utiliza os eventos OnNavigateTo e OnNavigateFrom.
  • Application state: Estado da aplicação. É gerenciado por meio de eventos expostos na classe PhoneApplicationService
  • Persistent data: Dados que serão compartilhados entre todas as sessões da aplicação e são armazenadas no isolated storage. Podem ser utilizados para armazenar configurações da aplicação, informações do usuário e etc.
  • Transient data: Dados que estão disponíveis para uma única instância da aplicação, ou seja, caso ela seja finalizada totalmente e iniciada novamente, estes dados não estarão mais lá. Ideal para dados temporários que necessitemos carregar.

Ciclo de vida das aplicações
Resumidamente, o clico de vida de uma aplicação pode ser representada pela seguinte figura (clique para ampliá-la):

wp7.jpg

Conclusão
Conforme foi apresentado, pudemos perceber que por mais que o Windows Phone 7 trabalhe com a execução de apenas uma aplicação por vez, se o aplicativo for desenvolvido seguindo as recomendações da Microsoft, isso será totalmente transparente ao usuário devido aos recursos de desenvolvimento que a plataforma oferece.

Categorias: artigos
Tags:
Introdução
Muitas são as notícias sobre o Windows Phone 7 e muito tem sido falado sobre a possibilidade de desenvolvimento para  ele. No entanto, muitas pessoas ainda possuem dúvidas referente a este assunto.
A primeira coisa que precisamos lembrar é que o Windows Phone 7 permitirá a utilização de dois Frameworks de desenvolvimento: Silverlight e XNA
Qual Framework devo usar?
Na verdade, quem decidirá qual o Framework mais adequado a ser utilizado será o próprio desenvolvedor, baseado é claro no tipo de aplicação que será desenvolvida. Basicamente, podemos faz uma classificação prévia da seguinte maneira:
 • Silverlight - Utilizado para criação de aplicações em geral
 • XNA - Utilizado para criação de jogos
Existe, é claro, uma tabela de critérios que podem nos auxiliar a decidir qual o Framework mais apropriado. Veja:
Silverlight XNA
Se você quer um desenvolvimento baseado em XAML e event driven Se você quer um framework de alta performance para jogos
Se você quer criar aplicações utilizando o estilo RIA Se você quer criar jogos multi-telas 2D e 3D
Se você quer utilizar os controles do Windows Phone Se você quer gerenciar recursos como modelos, texturas, efeitos, terrenos, animações e etc
Se você quer utilizar mídias digitais  
Se você quer utilizar o controle de navegador web  

Restrições
Após decidirmos qual o Framework iremos trabalhar, podemos imaginar o seguinte : "Bom, se optei por trabalhar com Silverlight, só terei acesso as bibliotecas do Silverlight". Certo? ERRADO!!!
Mesmo que escolhamos utilizar o Framework do Silverlight para desenvolvimento, poderemos também utilizar as classes do XNA e vice-versa. Porém existem algumas exceções. São elas:
  • Assemblies do Framework XNA não suportados em aplicações Silverlight
    • Microsoft.Xna.Framework.Game (microsoft.xna.framework.game.dll)
    • Microsoft.Xna.Framework.Graphics (microsoft.xna.framework.graphics.dll)
  • Assemblies do Framework Silverlight não suportados em aplicações XNA
    • System.Windows (A classe System.Windows.Application pode continuar sendo utilizada)
    • System.Windows.Automation
    • System.Windows.Automation.Peers
    • System.Windows.Automation.Provider
    • System.Windows.Automation.Text
    • System.Windows.Browser
    • System.Windows.Controls
    • System.Windows.Controls.Primitives
    • System.Windows.Data
    • System.Windows.Documents
    • System.Windows.Ink
    • System.Windows.Input
    • System.Windows.Interop
    • System.Windows.Markup
    • System.Windows.Media
    • System.Windows.Media.Animation
    • System.Windows.Media.Effects
    • System.Windows.Media.Imaging
    • System.Windows.Media.Media3D
    • System.Windows.Messaging
    • System.Windows.Navigation
    • System.Windows.Printing
    • System.Windows.Resources
    • System.Windows.Shapes
    • System.Windows.Threading 
Conclusão
Conforme citamos, a decisão de qual Framework de trabalho devemos utilizar, estará diretamente relacionada com o tipo de aplicação que queremos criar, não tem segredo. Nos próximos artigos, abordarei alguns temas interessantes referente a cada um dos Frameworks existentes. Até a próxima...
Categorias: artigos
Tags:

Introdução
Desde que ocorreu o MIX10, muito tem se falado sobre o Windows Phone 7, e é claro que para nós, desenvolvedores, uma das coisas que nos chamou grande atenção foi a possibilidade de desenvolvermos aplicativos em Silverlight e XNA para o novo brinquedinho. A grande dúvida que muitos possuem, é como? Quais são os passos iniciais? Nosso objetivo neste artigo será demonstrar os passos básicos para que possa montar seu ambiente de desenvolvimento.

Pré-requisitos
O Windows Phone Developer Tools Beta pode ser instalado desde que os seguintes pré-requisitos sejam atendidos:

  • Sistema Operacional
    • Windows Vista (x86 e x64) ENU Service Pack 2 - todas as versões exceto Starter Edition
      Windows 7 (x86 e x64) - todas as versões excerto Starter Edition
  • Disco Rígido
    • 3 GB de espaço livre na partição de sistema
  • Memória
    • 2 GB RAM
  • Gráfico
    • Placas compatíveis com o DirectX 10 com o driver WDDM 1.1

Downloads
A instalação do Windows Phone Developer Tools Beta está disponível no seguinte endereço:

Instalando
Ao baixar o arquivo vm_web.exe você notará que ele possui o tamanho de 3.2 MB, não se assunte, o tamanho é este mesmo, pois o instalador que acabamos de baixar irá ser apenas o ponto de partida de nosso setup. Ao iniciá-lo, o próprio setup irá decidir o que necessita ser baixado e instalado em seu computador.

Conclusão
Estes são os passos básicos para que se possa começar a desenvolver aplicações para o Windows Phone 7. Em nossos próximos artigos iremos abordar tópicos relacionados ao desenvolvimento destes aplicativos.

Categorias: artigos
Tags: