none
Carregar arquivo XML em várias páginas? RRS feed

  • Pergunta

  • Olá,

    Eu estou utilizando um arquivo de dados XML para utilizar no meu app. No entanto, como vou ter várias telas e será necessário carregar novamente os dados a cada tela, pergunto se é possível utilizar uma coleção comum a todas as telas? Tendo em vista que o arquivo terá mais de 500 objetos, tenho a impressão que carrega-la a cada página pode tornar a app lenta.

    sexta-feira, 3 de fevereiro de 2012 18:15

Respostas

Todas as Respostas

  • Olha, não sei a opnião dos colegas, mas creio que o melhor seria separar o adequado para carregar em cada tela. Instanciar um objeto "pesado" e mante-lo por todo o sistema pode consumir muita memória. Alem do que, dependendo do estado de execução do aplicativo pode apresentar um comportamento inadequado.

    Da uma lida nesse modelo de execução de aplicativos do WP7 que vc vai entender melhor: http://msdn.microsoft.com/en-us/library/ff817008(v=vs.92).aspx

     

    Mesmo assim.. é possivel manter o objeto por todo aplicativo. Na classe App do projeto, adiciona um propriedade publica por exemplo. Depois é só usar o seguinte:

    var x = ((App)Application.Current).Teste;
    
    sexta-feira, 3 de fevereiro de 2012 19:08
  • Luciano,

    É que cada tela exibirá parte das coleção filtrando por uma categoria.

    Vamos supor que eu tenho uma lista de pessoas. O objeto pessoa tem as propriedades cidade e tipo (cliente, funcionário, fornecedor).

    Então, o usuário entra no app e aparece se quer filtrar as pessoas por cidade ou por tipo. Na segunda página, terão as cidades ou os tipos. E por último, a lista de objetos (pessoas) filtrados ou pela cidade ou pelo tipo.

    Ao meu ver, para o app localizar todas as cidades com usuários ele precisará ter a lista completa carregada, certo? O mesmo vale para os tipos. Depois, ao entrar num dos filtros ele irá carregar a lista toda para poder filtrar para a condição determinada, certo?

    Existe alguma forma de separa de forma antecipada os dados? O que vocês sugerem? Os dados estão todos num arquivo XML.

    sexta-feira, 3 de fevereiro de 2012 20:42
  • Olha, depende da quantidade de dados que você utilizar ou se irá ser somente leitura, enfim, existem alternativas.

    Pode-se trabalhar com LINQ to SQL que é um banco de dados local no Isolated Storage. http://msdn.microsoft.com/en-us/library/hh202860(v=vs.92).aspx

    E também é possível usar LINQ to XML, aqui vários links: 

    http://msdn.microsoft.com/en-us/library/bb387061.aspx 

    http://jesseliberty.com/2011/02/15/linq-to-xml/ 

    http://mobileworld.appamundi.com/blogs/petevickers/archive/2010/12/06/windows-phone-7-linq-to-xml-corruption.aspx

     

    Acho que o linq no seu caso é indispensável, já que para filtrar dados fica muito fácil com ele. Em questão de velocidade/performance creio que só testando para tirar a duvida, mas essas duas abordagens seriam as minhas. No seu caso em especifico, como descrito, acho que o linq to xml já resolve bem, nos links que passei acima da pra ter uma ideia.

    • Marcado como Resposta Gustavo Binnie segunda-feira, 6 de fevereiro de 2012 17:04
    segunda-feira, 6 de fevereiro de 2012 10:55