Tenere traccia di cartelle e file usati di recente

API importanti

Tenere traccia dei file a cui l'utente accede di frequente aggiungendoli all'elenco degli ultimi elementi usati dell'app (MRU). La piattaforma gestisce automaticamente il MRU tramite l'ordinamento degli elementi in base all'ultimo accesso e rimuovendo l'elemento meno recente quando viene raggiunto il limite di 25 elementi dell'elenco. Tutte le app hanno il proprio MRU.

L'MRU dell'app è rappresentato dalla classe StorageItemMostRecentlyUsedList, ottenuta dalla proprietà statica StorageApplicationPermissions.MostRecentlyUsedList. Gli elementi MRU vengono archiviati come oggetti IStorageItem, pertanto è possibile aggiungere oggetti StorageFile (che rappresentano file) e oggetti StorageFolder (che rappresentano cartelle).

Nota

 Per esempi completi vedere l’esempio di selezione file e l’esempio di accesso ai file.

Prerequisiti

Aggiungere un file selezionato all'elenco MRU

  • I file scelti dall'utente sono spesso file che usa spesso. Prendere quindi in considerazione l'aggiunta di file prelevati all'MRU dell'app non appena vengono prelevati. Ecco come.

    Windows.Storage.StorageFile file = await picker.PickSingleFileAsync();
    
    var mru = Windows.Storage.AccessCache.StorageApplicationPermissions.MostRecentlyUsedList;
    string mruToken = mru.Add(file, "profile pic");
    

    StorageItemMostRecentlyUsedList.Add è in overload. Nell'esempio viene usato Add(IStorageItem, String) in modo da poter associare i metadati al file. L'impostazione dei metadati consente di registrare lo scopo dell'elemento, ad esempio "immagine profilo". È anche possibile aggiungere il file all'elenco MRU senza metadati chiamando Add(IStorageItem). Quando si aggiunge un elemento all'elenco MRU, il metodo restituisce una stringa di identificazione univoca, denominata token, che viene usata per recuperare l'elemento.

Suggerimento

Il token servirà per recuperare l’elemento dall’elenco degli elementi usati di recente, quindi salvarlo. Per altre informazioni sui dati dell'app, vedere Gestione dei dati dell'applicazione.

Usare un token per recuperare un elemento dall'elenco MRU

Usare il metodo di recupero più appropriato per l'elemento da recuperare.

Ecco come recuperare il file appena aggiunto.

StorageFile retrievedFile = await mru.GetFileAsync(mruToken);

Ecco come eseguire l'iterazione di tutte le voci per ottenere i token e quindi gli elementi.

foreach (Windows.Storage.AccessCache.AccessListEntry entry in mru.Entries)
{
    string mruToken = entry.Token;
    string mruMetadata = entry.Metadata;
    Windows.Storage.IStorageItem item = await mru.GetItemAsync(mruToken);
    // The type of item will tell you whether it's a file or a folder.
}

AccessListEntryView consente di scorrere le voci nell'elenco MRU. Queste voci sono strutture AccessListEntry che contengono il token e i metadati per un elemento.

Rimozione di elementi da MRU quando è pieno

Quando viene raggiunto il limite di 25 elementi nell'MRU e si tenta di aggiungere un nuovo elemento, l'elemento con l'accesso meno recente viene rimosso automaticamente. Quindi, non è mai necessario rimuovere un elemento prima di aggiungerne uno nuovo.

Elenco di accesso futuro

Oltre a un elenco MRU, l'app ha anche un elenco di accesso futuro. Selezionando file e cartelle, l'utente concede all'app l'autorizzazione per accedere agli elementi che potrebbero non essere accessibili altrimenti. Se si aggiungono questi elementi all'elenco di accesso futuro, si manterrà tale autorizzazione quando l'app vorrà accedere nuovamente a tali elementi in un secondo momento. L'elenco di accesso futuro dell'app è rappresentato dalla classe StorageItemAccessList, ottenuta dalla proprietà statica StorageApplicationPermissions.FutureAccessList.

Quando un utente seleziona un elemento, è consigliabile aggiungerlo all'elenco di accesso futuro e all'elenco MRU.

  • FutureAccessList può contenere fino a 1000 elementi. Promemoria: può contenere cartelle e file, quindi il numero di cartelle in sé sarà elevato.
  • La piattaforma non rimuove mai gli elementi da FutureAccessList. Quando si raggiunge il limite di 1000 elementi, non è possibile aggiungerne un altro fino a quando non si crea spazio con il metodo Remove.