Funções SaveData, LoadData e ClearData

Aplica-se a: Aplicativos de tela

Salva e recarrega uma coleção do armazenamento do host do aplicativo.

Nota

Essas funções agora podem ser usadas ao reproduzir um aplicativo em um navegador da Web como um recurso experimental. Esse recurso é desabilitado por padrão. Para habilitar, navegue até Definições>Próximos recursos>Experimental>Habilitar SaveData, LoadData, ClearData no player da Web." e ative a opção. Para enviar comentários sobre este recurso experimental, acesse Fórum da Comunidade do Power Apps.

Descrição

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

A função LoadData recarrega novamente uma coleção pelo nome com o qual foi salva anteriormente com SaveData. Você não pode usar essa função para carregar uma coleção de outra fonte.

A função ClearData apaga o armazenamento com um nome específico ou apaga todo o armazenamento associado ao aplicativo se nenhum nome for fornecido.

Nota

  • O nome compartilhado entre SaveData, LoadData e ClearData é uma chave, não um nome de arquivo. Ele não precisa ser complexo, pois os nomes são exclusivos para cada aplicativo e não há perigo de conflito de nomes. O nome não deve conter nenhum destes caracteres: *".?:\<>|/.
  • SaveData é limitado a 1 MB de dados para Power Apps em execução no Teams e em um navegador da Web. Não há limite fixo para o Power Apps em execução em um player móvel, mas existem limites práticos discutidos abaixo.
  • Não use SaveData para armazenar dados confidenciais na web, uma vez que serão armazenados em texto simples.

Use essas funções para melhorar o desempenho de inicialização do aplicativo:

  • Armazenando em cache dados na fórmula App.OnStart em uma primeira execução.
  • Recarregando o cache local nas próximas execuções.

Você também pode usar essas funções para adicionar recursos offline simples ao seu aplicativo.

Você não pode usar essas funções dentro de um navegador quando:

  • Criação do aplicativo no Power Apps Studio.

Para testar seu aplicativo, execute-o no Power Apps Mobile em um dispositivo iPhone ou Android.

Essas funções são limitadas pela quantidade de memória de aplicativo disponível à medida que operam em uma coleção na memória. A memória disponível pode variar dependendo de fatores como:

  • O dispositivo e o sistema operacional.
  • A memória que o player do Power Apps usa.
  • Complexidade do aplicativo com telas e controles.

Teste seu aplicativo com os cenários esperados no tipo de dispositivos que você espera que o aplicativo execute ao armazenar dados grandes. Espere ter entre 30 MB e 70 MB de memória disponível em geral.

Essas funções dependem da coleção que está sendo definida implicitamente com Collect ou ClearCollect. Você não precisa chamar Collect ou ClearCollect para carregar dados na coleção para defini-los. É um caso comum ao usar LoadData após uma SaveData anterior. Tudo o que é necessário é a presença dessas funções em uma fórmula para definir implicitamente a estrutura da coleção. Para obter mais informações, consulte criando e removendo variáveis.

Os dados carregados serão anexados à coleção. Use a função Clear antes de chamar LoadData se você quiser começar com uma coleção vazia.

Segurança dos dados

Considere cuidadosamente o isolamento e a criptografia dos dados armazenados com SaveData e decida se são apropriados para suas necessidades, especialmente se os dispositivos forem compartilhados por vários usuários.

Os dados armazenados com SaveData são isolados de outros Power Apps pelos players do Power Apps. Os dados são armazenados com base na ID do Aplicativo, isolando automaticamente o espaço de nome SaveData entre Power Apps.

O sistema operacional e o navegador são responsáveis por isolar dados entre Power Apps e outros aplicativos em um dispositivo e com sites. Por exemplo, o sistema operacional é responsável por isolar os dados armazenados no Microsoft Outlook dos dados armazenados no Power Apps e também isolar esses dados de sites como Bing.com ou PowerApps.com. As instalações de área restrita do aplicativo interno do sistema operacional são usadas para armazenamento SaveData, que geralmente é inacessível ou oculto para o usuário.

Ao usar o mesmo aplicativo, o sistema operacional e o navegador também são responsáveis por isolar os dados entre usuários de diferentes níveis do sistema operacional. Por exemplo, se dois usuários diferentes compartilham um computador e usam duas credenciais de logon diferentes do Windows, o sistema operacional é responsável por isolar os dados entre os dois usuários do Windows.

Os dados podem ou não ser isolados entre diferentes usuários do Power Apps se o usuário do sistema operacional for o mesmo. Nem todo player do Power Apps trata isso da mesma maneira. Por exemplo, enquanto está conectado como o mesmo usuário do Windows, no player do Power Apps, o usuário sai do Power Apps e entra como um usuário diferente do Power Apps. Os dados armazenados em um aplicativo antes da mudança de usuário do Power Apps podem ser acessados pelo segundo usuário do Power Apps dentro do mesmo aplicativo. Os dados também podem ser removidos e o primeiro usuário do Power Apps pode não conseguir mais acessá-los. O comportamento varia entre players do Power Apps.

O sistema operacional também pode criptografar os dados ou você pode usar uma ferramenta de gerenciamento de dispositivo móvel, como Microsoft Intune. Os dados armazenados durante a reprodução de um aplicativo em um navegador da Web não são criptografados.

Sintaxe

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

  • Coleção - obrigatório. Coleção a ser armazenada ou carregada.
  • Nome - obrigatório. O nome do armazenamento. O nome deve ser o mesmo para salvar e carregar o mesmo conjunto de dados. O espaço de nome não é compartilhado com outros aplicativos. Os nomes não devem conter nenhum destes caracteres: *".?:\<>|/.
  • IgnoreNonexistentFile - opcional. Um valor booliano que indica o que fazer se o arquivo ainda não existir. Use false (padrão) para retornar um erro e true para suprimir o erro.

ClearData( [Name] )

  • Nome - opcional. Nome do armazenamento previamente salvo com SaveData. Se o Nome não for fornecido, todo o armazenamento associado ao aplicativo será apagado.

Exemplos

Fórmula Descrição Resultado
SaveData( LocalCache, "MyCache" ) Salve a coleção LocalCache no dispositivo do usuário com o nome "MyCache", adequado para que LoadData seja recuperado mais tarde. Os dados são salvos no host do aplicativo com o nome "MyCache".
LoadData( LocalCache, "MyCache" ) Carrega a coleção LocalCache do dispositivo do usuário com o nome "MyCache", anteriormente armazenado com uma chamada para SaveData. Os dados são carregados do host do aplicativo com o nome "MyCache".
ClearData( "MyCache" ) Apaga o armazenamento com o nome "MyCache". Quaisquer dados armazenados com este nome não estarão mais disponíveis por meio de LoadData. Os dados são removidos do host do aplicativo com o nome "MyCache".
ClearData() Apaga todo o armazenamento associado a este aplicativo. Os dados armazenados por outros aplicativos não são afetados. Todos os dados são removidos do host do aplicativo.

Exemplo offline simples

O exemplo simples a seguir captura e armazena os nomes e as imagens dos itens diários enquanto estiver offline. Ele armazena as informações no armazenamento local do dispositivo para uso posterior. Isso permite que o aplicativo seja fechado ou o dispositivo seja reiniciado sem perder dados.

Nota

Este exemplo usa um controle de câmera para capturar imagens. Como SaveData é limitado a 1 MB de dados ao ser executado no Teams ou em um navegador da Web, este exemplo não funcionará com mais de algumas imagens. Além disso, dependendo da câmera, pode não funcionar nem mesmo com uma imagem. Use um dispositivo para trabalhar com este exemplo completo ou remova o controle da câmera e parte da imagem deste exemplo para executar no Teams ou em um navegador da Web.

  1. Crie um aplicativo de tela em branco com um layout de Tablet. Para obter mais detalhes, leia criando um aplicativo de um modelo e selecione Layout do tablet em aplicativo em branco.

  2. Adicione um controle Text input e um controle Camera e organize-os aproximadamente conforme mostrado:

    Um controle Text input e Camera adicionado a uma tela em branco.

  3. Adicione um controle Button

  4. Clique duas vezes no controle Button para alterar o texto do botão para Adicionar item (ou modificar a propriedade Text).

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

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

    Um controle Button adicionado com o texto

  6. Adicione outro controle Button.

  7. Clique duas vezes no controle Button para alterar o texto do botão para Salvar Dados (ou modificar a propriedade Text).

  8. Defina a propriedade OnSelect do controle Button como esta fórmula para salvar nossa coleção no dispositivo local:

    SaveData( MyItems, "LocalSavedItems" )
    

    Um controle Button adicionado com o texto

    É tentador testar o botão, pois ele não afeta nada. Contudo, você só verá um erro enquanto estiver criando em um navegador da Web. Salve o aplicativo primeiro e abra-o em um dispositivo antes de seguir as próximas etapas para testar esta fórmula:

  9. Adicione um terceiro controle Button.

  10. Clique duas vezes no controle Button para alterar o texto do botão para Carregar Dados (ou modificar a propriedade Text).

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

    LoadData( MyItems, "LocalSavedItems" )
    

    Um controle Button adicionado com o texto

  12. Adicione um controle Gallery com um layout vertical que inclui uma imagem e áreas de texto:

    Seleção de variedade de galeria,

  13. Quando solicitado, selecione a coleção MyItems como a fonte de dados para esta galeria. Isso definirá a propriedade Items do controle Gallery:

    Seleção da galeria de fonte de dados. O controle de imagem no modelo da galeria deve ser a propriedade Image padrão para ThisItem.Picture e os controles de rótulo devem padronizar suas propriedades Text como ThisItem.Item. Verifique essas fórmulas se depois de adicionar itens nas etapas a seguir você não vir nada na galeria.

  14. Posicione o controle à direita dos outros controles:

    Galeria reposicionada à direita da tela.

  15. Salve seu aplicativo. Se for a primeira vez que foi salvo, não haverá necessidade de publicá-lo. Se não for a primeira vez, publique o aplicativo depois de salvar.

  16. Abra seu aplicativo em um dispositivo, como um telefone ou tablet. SaveData e LoadData não podem ser usados no estúdio ou em um navegador da Web. Atualize sua lista de aplicativos se você não vir seu aplicativo imediatamente, pode levar alguns segundos para que o aplicativo apareça em seu dispositivo. Sair e voltar para sua conta também pode ajudar.

    Aplicativo em execução sem itens adicionados. Depois de fazer o download do aplicativo, você pode se desconectar da rede e executá-lo offline.

  17. Insira o nome e tire uma foto de um item.

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

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

  19. Selecione o botão Salvar Dados. Isso salvará os dados em sua coleção em seu dispositivo local.

  20. Feche o aplicativo. Sua coleção na memória será perdida, incluindo todos os nomes de itens e imagens, mas eles ainda estarão no armazenamento do dispositivo.

  21. Inicie o aplicativo novamente. A coleção na memória será exibida novamente como vazia na galeria.

    Aplicativo novamente em execução sem itens adicionados.

  22. Selecione o botão Carregar Dados. A coleção será preenchida usando os dados armazenados em seu dispositivo e seus itens voltarão à galeria. A coleção estava vazia antes de esse botão chamar a função LoadData; não foi necessário chamar Collect ou ClearCollect antes de carregar os dados do armazenamento.

    Aplicativo em execução com três itens restaurados após chamar a função LoadData.

  23. Selecione o botão Carregar Dados novamente. Os dados armazenados serão anexados ao final da coleção e uma barra de rolagem aparecerá na galeria. Se você quiser substituir em vez de append, use a função Clear primeiro para limpar a coleção antes de chamar a função LoadData.

    Aplicativo em execução com seis itens restaurados após chamar a função LoadData duas vezes.

Exemplo offline mais avançado

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