Funções SaveData, LoadData e ClearData

Aplica-se a: Aplicações de tela

Guarda e atualiza uma coleção do armazenamento do host da aplicação.

Nota

Estas funções podem agora ser usadas quando se reproduz uma aplicação num browser web como uma funcionalidade experimental. Esta funcionalidade é desativada por predefinição. Para ativar, navegue para Definições>Próximas caraterísticas>Experimental>Ativou SaveData, LoadData, ClearData no leitor web. e ative o comutador. Para submeter comentários sobre esta funcionalidade experimental, aceda ao fórum da comunidade Power Apps.

Descrição

A função SaveData armazena uma coleção para utilização posterior com um nome.

A função LoadData carrega novamente através do nome uma coleção guardada anteriormente com a função SaveData. Não pode utilizar esta função para carregar uma coleção a partir de outra origem.

A função ClearData limpa o armazenamento com um nome específico ou limpa todo o armazenamento associado à aplicação se não for fornecido nenhum nome.

Nota

  • O nome partilhado entre SaveData, LoadData e ClearData é uma chave, não um nome de ficheiro. Não é necessário ser complexo, uma vez que os nomes são exclusivos de cada aplicação e não existe nenhum perigo de conflito de nomes. O nome não pode conter nenhum destes carateres: *".?:\<>|/.
  • O SaveData está limitado a 1 MB de dados para executar o Power Apps no Teams e num browser da web. Não há limite fixo para Power Apps num leitor móvel, mas existem limites práticos discutidos abaixo.
  • Não utilize SaveData para armazenar dados confidenciais na Web, uma vez que estes serão armazenados em texto simples.

Utilize estas funções para melhorar o desempenho da iniciação de aplicações:

  • Colocar em cache dados na fórmula App.OnStart numa primeira execução.
  • O recarregamento da cache local em execuções seguintes.

Também pode utilizar estas funções para adicionar capacidades offline simples à sua aplicação.

Não é possível utilizar estas funções dentro de um browser quando:

  • Criar a aplicação no Power Apps Studio.

Para testar a sua aplicação, execute-a no Power Apps Mobile num iPhone ou dispositivo Android.

Estas funções estão limitadas pela quantidade de memória da aplicação disponível, uma vez que operam numa coleção de memória. A memória disponível pode variar consoante fatores como:

  • O dispositivo e o sistema operativo.
  • A memória utilizada pelo leitor do Power Apps.
  • Complexidade da aplicação com ecrãs e controlos.

Teste a sua aplicação com cenários esperados no tipo de dispositivos que espera que a aplicação execute ao armazenar dados grandes. Espera ter entre 30 MB e 70 MB de memória disponível em geral.

Estas funções dependem da coleção ser definida implicitamente com Collect ou ClearCollect. Não é necessário chamar Collect ou ClearCollect para carregar dados na coleção para a definição da mesma. Trata-se de um incidente comum quando utiliza LoadData após um SaveData anterior. Tudo o que é necessário é a presença destas funções numa fórmula para definir implicitamente a estrutura da coleção. Para mais informações, consulte criar e remover variáveis.

Os dados carregados serão acrescentados à coleção. Utilize a função Clear antes de chamar LoadData se pretender começar com uma coleção vazia.

Segurança de dados

Considere com cuidado o isolamento e a encriptação de dados armazenados com SaveData e decida se é adequado às suas necessidades, especialmente se os dispositivos são partilhados por vários utilizadores.

Os dados armazenados com SaveData são isoladas de outras Power Apps pelos leitores do Power Apps. Os dados são armazenados com base no ID de Aplicação da aplicação, isolando automaticamente o espaço do nome SaveData entre Power Apps.

O sistema operativo e o browser são responsáveis pelo isolamento de dados entre Power Apps e outras aplicações num dispositivo e com sites. Por exemplo, o sistema operativo é responsável por isolar dados armazenados no Microsoft Outlook de dados armazenados em Power Apps e também por isolar esses dados de sites, como Bing.com ou PowerApps.com. As instalações de sandbox de aplicações incorporadas do sistema operativo são utilizadas para armazenamento SaveData, o que, normalmente, não está acessível ou oculto ao utilizador.

Ao utilizar a mesma aplicação, o sistema operativo e o browser também são responsáveis pelo isolamento de dados entre diferentes utilizadores de nível do sistema operativo. Por exemplo, se dois utilizadores diferentes partilharem um computador e utilizarem duas credenciais de início de sessão do Windows diferentes, o sistema operativo é responsável por isolar dados entre os dois utilizadores do Windows.

Os dados poderão ou não ser isolados entre utilizadores do Power Apps diferentes se o utilizador do sistema operativo for o mesmo. Nem todos os leitores do Power Apps tratam isto da mesma forma. Por exemplo, quando iniciou sessão como o mesmo utilizador do Windows, no leitor do Power Apps, o utilizador termina sessão do Power Apps e inicia sessão como um utilizador do Power Apps diferente. Os dados armazenados numa aplicação antes da alteração do utilizador do Power Apps poderão estar acessíveis para o segundo utilizador do Power Apps na mesma aplicação. Os dados também podem ser removidos e o primeiro utilizador do Power Apps deixa de lhes poder aceder. Este comportamento varia entre leitores do Power Apps.

O sistema operativo também poderá encriptar os dados ou pode utilizar uma ferramenta de gestão de dispositivos móveis, tal como o Microsoft Intune. Os dados armazenados quando reproduzem uma aplicação num browser da web não estão encriptados.

Sintaxe

SaveData( Collection, Name )
LoadData( Collection, Name [, IgnoreNonexistentFile ])

  • Collection – Obrigatório. Coleção a armazenar ou carregar.
  • Nome – Obrigatório. Nome do armazenamento. O nome tem de ser o mesmo para guardar e carregar o mesmo conjunto de dados. O espaço de nomes não é partilhado com outras aplicações. Os nomes não podem conter nenhum destes carateres: *".?:\<>|/.
  • IgnoreNonexistentFile – Opcional. Um valor Booleano que indica o que deve ser feito se o ficheiro ainda não existir. Utilize false (predefinido) para devolver um erro e true para eliminar o erro.

ClearData( [Nome] )

  • Nome – Opcional. Nome do armazenamento previamente guardado com SaveData. Se Nome não for fornecido, todo o armazenamento associado à aplicação é limpo.

Exemplos

Fórmula Descrição Resultado
SaveData( LocalCache, "MyCache" ) Guarde a colecção do LocalCache no dispositivo do utilizador com o nome "MyCache", adequada para o LoadData para obter mais tarde. Os dados são guardados para o host da aplicação sob o nome "MyCache".
LoadData( LocalCache, "MyCache" ) Carrega a coleção LocalCache a partir do dispositivo do utilizador sob o nome "MyCache", anteriormente armazenado com uma chamada para SaveData. Os dados são carregados do host da aplicação sob o nome "MyCache".
ClearData( "MyCache" ) Limpa o armazenamento com o nome "MyCache". Todos os dados armazenados com este nome deixarão de estar disponíveis através de LoadData. Os dados são removidos do host da aplicação sob o nome "MyCache".
ClearData() Limpe todo o armazenamento associado a esta aplicação. Os dados armazenados por outras aplicações não são afetados. Todos os dados são removidos do host da aplicação.

Exemplo offline simples

O exemplo simples seguinte captura e armazena os nomes e as imagens de itens diários enquanto offline. Armazena as informações no armazenamento local do dispositivo para utilização posterior. Isto permite que a aplicação seja fechada ou que o dispositivo seja reiniciado sem perder dados.

Nota

Este exemplo usa um controlo camera para capturar imagens. Uma vez que o SaveData está limitado a 1 MB de dados quando está a executar no Teams ou num browser da web, este exemplo não funcionará com mais do que algumas imagens. Além disso, dependendo da câmara, pode não funcionar com uma única imagem. Utilize um dispositivo para trabalhar através deste exemplo completo, ou remova o controlo da câmara e a parte da imagem deste exemplo para executar no Teams ou num browser da web.

  1. Criar uma aplicação de tela em branco com um esquema de tablet. Para mais detalhes, leia criar uma aplicação a partir de um modelo e selecione Esquema de tablet em Aplicação em branco.

  2. Adicione um controlo de Text input e um controlo de Camera e organize-os conforme mostrado abaixo:

    Um controlo de entrada de texto e de câmara adicionados a um ecrã em branco.

  3. Adicionar um controlo de Button.

  4. Faça duplo clique no controlo button para alterar o texto do botão para Adicionar Item (ou modificar a propriedade de Text).

  5. Defina a propriedade OnSelect do controlo button como esta fórmula que irá adicionar um item à nossa coleção:

    Collect( MyItems, { Item: TextInput1.Text, Picture: Camera1.Photo } )
    

    Um controlo button adicionado com o texto

  6. Adicionar outro controlo de Button.

  7. Faça duplo clique no controlo button para alterar o texto do botão para Guardar Dados (ou modificar a propriedade de Text).

  8. Defina a propriedade OnSelect do controlo button como esta fórmula para guardar a nossa coleção no dispositivo local:

    SaveData( MyItems, "LocalSavedItems" )
    

    Um controlo button adicionado com o texto

    É tentador testar o botão, uma vez que não afeta nada. No entanto, só verá um pois está a criar num browser. Guarde primeiro a aplicação e abra-a num dispositivo antes de seguir os passos seguintes para testar esta fórmula:

  9. Adicionar um terceiro controlo de Button.

  10. Faça duplo clique no controlo button para alterar o texto do botão para Carregar Dados (ou modificar a propriedade de Text).

  11. Defina a propriedade OnSelect do controlo button como esta fórmula para carregar a nossa coleção do dispositivo local:

    LoadData( MyItems, "LocalSavedItems" )
    

    Um controlo button adicionado com o texto

  12. Adicionar um controlo de Gallery com um esquema vertical que inclua uma imagem e áreas de texto:

    Seleção de variedade de galerias,

  13. Quando lhe for pedido, selecione a colecção MyItems como a origem de dados para esta galeria. Isto irá definir a propriedade Items do controlo de Gallery:

    Galeria seleção de origem de dados. O controlo image no modelo de galeria deve predefinir a sua propriedade Image para ThisItem.Picture e os controlos da etiqueta devem ambos predefinirem as suas propriedades de Text para ThisItem.Item. Verifique estas fórmulas se depois de adicionar itens nos passos seguintes não visualizar nada na galeria.

  14. Posicione o controlo à direita dos outros controlos:

    Galeria reposicionada à direita do ecrã.

  15. Guarde a sua aplicação. Se for a primeira vez que tiver sido guardada, não é necessário publicá-la. Se não for a primeira vez, publique a aplicação depois de guardar.

  16. Abra a sua aplicação num dispositivo, como um telemóvel ou tablet. SaveData e LoadData não podem ser utilizados no Studio ou num browser. Atualize a lista de aplicações se não visualizar a sua aplicação de imediato, a aplicação poderá demorar alguns segundos para ser apresentada no seu dispositivo. Terminar sessão e iniciá-la novamente na sua conta também pode ajudar.

    App a funcionar sem itens adicionados. Uma vez descarregada a sua aplicação, pode desligar-se da rede e executar a aplicação offline.

  17. Introduza o nome e tire uma fotografia de um item.

  18. Selecione o botão Adicionar Item. Repita a adição de itens algumas vezes para carregar a sua coleção.

    Aplicação em execução com três itens adicionados.

  19. Selecione o botão Guardar Dados. Isto irá guardar os dados da sua coleção no dispositivo local.

  20. Feche a aplicação. A sua coleção na memória será perdida, incluindo todos os nomes de item e imagens, mas continuará a existir no armazenamento do dispositivo.

  21. Inicie a aplicação novamente. A coleção na memória será mostrada novamente como vazia na galeria.

    Aplicação em execução novamente sem itens adicionados.

  22. Selecione o botão Carregar Dados. A coleção será repopulada com os dados armazenados no dispositivo e os seus itens ficarão novamente na galeria. A coleção estava vazia antes deste botão chamar a função LoadData; não havia necessidade de chamar Collect ou ClearCollect antes de carregar os dados do armazenamento.

    Aplicação em execução com três itens restaurados depois de chamar a função LoadData.

  23. Selecione novamente o botão Carregar Dados. Os dados armazenados serão acrescentados no final da coleção e uma barra de deslocamento aparecerá na galeria. Se pretender substituir em vez de acrescentar, utilize primeiro a função Clear para limpar a coleção antes de chamar a função LoadData.

    Aplicação em execução com seis itens restaurados depois de chamar a função LoadData duas vezes.

Exemplo offline mais avançado

Para obter um exemplo detalhado, consulte o artigo sobre capacidades offline simples.