Partilhar via


SaveData, LoadData, e ClearData funções

Aplica-se a: Aplicativos de tela

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

Descrição

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

A LoadData função recarrega uma coleção por nome que foi salva anteriormente com SaveDatao . Não pode utilizar esta função para carregar uma coleção a partir de outra origem.

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

Nota

  • O nome compartilhado entre SaveData, LoadDatae ClearData é uma chave, não um nome de arquivo. 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: *".?:\<>|/.
  • SaveData está limitado a 1 MB de dados para as Power Apps em execução no Teams e num browser. Não há limite fixo para Power Apps num leitor móvel, mas existem limites práticos discutidos abaixo.
  • Não use SaveData para armazenar dados confidenciais na Web, pois eles serão armazenados em texto sem formatação.

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. É um caso comum quando se usa LoadData depois de um .SaveData 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. Use a função Limpar antes de chamar LoadData se quiser começar com uma coleção vazia.

Segurança de dados

Considere cuidadosamente o isolamento e a criptografia de dados armazenados e SaveData decida se é apropriado 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 jogadores do Power Apps. Os dados são armazenados com base no ID da Aplicação da aplicação, isolando automaticamente o espaço de nomes entre as SaveData 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. Os recursos de sandbox de aplicativos integrados do sistema operacional são usados para SaveData armazenamento que geralmente não é acessível ou oculto do usuário.

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( Coleção, Nome )
LoadData( Coleção, Nome [, IgnoreNonexistentFile ])

  • Coleção - 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 salvo anteriormente com SaveData. Se Nome não for fornecido, todo o armazenamento associado à aplicação é limpo.

Exemplos

Fórmula Descrição Resultado
SaveData( LocalCache, "MyCache" ) Salve a coleção LocalCache no dispositivo do usuário sob o nome "MyCache", adequado para LoadData recuperar 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 do dispositivo do usuário sob o nome "MyCache", armazenado anteriormente 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". Quaisquer dados armazenados com este nome deixarão de estar disponíveis através do 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. Como SaveData é limitado a 1 MB de dados quando executado no Teams ou em um navegador 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 controle de imagem no modelo de galeria deve padronizar sua propriedade Image para ThisItem.Picture e os controles de rótulo devem ambos padrão suas propriedades 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 pode ser usado no Studio ou em um navegador da Web. 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. Depois que o aplicativo for baixado, você poderá se desconectar da rede e executá-lo 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 que esse botão chamasse a LoadData função, não havia necessidade de chamar Collect ou ClearCollect antes de carregar os dados do armazenamento.

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

  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 você quiser substituir em vez de acrescentar, use a função Limpar primeiro para limpar a coleção antes de chamar a LoadData função.

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

Exemplo offline mais avançado

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