Dela via


Spåra nyligen använda filer och mappar

viktiga API:er

Spåra filer som användaren kommer åt ofta genom att lägga till dem i appens senast använda lista (MRU). Plattformen hanterar MRU åt dig genom att sortera objekt baserat på när de senast användes, och genom att ta bort det äldsta objektet när listans gräns på 25 objekt nås. Alla appar har sin egen MRU.

Appens MRU representeras av klassen StorageItemMostRecentlyUsedList , som du hämtar från den statiska egenskapen StorageApplicationPermissions.MostRecentlyUsedList . MRU-objekt lagras som IStorageItem-objekt , så både StorageFile-objekt (som representerar filer) och StorageFolder-objekt (som representerar mappar) kan läggas till i MRU.

Anmärkning

 Fullständiga exempel finns i Filväljarexempel och Filåtkomstexempel .

Förutsättningar

Lägga till en vald fil i MRU

  • De filer som användaren väljer är ofta filer som de återkommer till upprepade gånger. Överväg därför att lägga till plockade filer i appens MRU så snart de har valts. Så här gör du.

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

    StorageItemMostRecentlyUsedList.Add är överbelastad. I exemplet använder vi Add(IStorageItem, String) så att vi kan associera metadata med filen. Om du anger metadata kan du registrera objektets syfte, till exempel "profilbild". Du kan också lägga till filen i MRU utan metadata genom att anropa Add(IStorageItem). När du lägger till ett objekt i MRU returnerar metoden en unikt identifierande sträng, kallad en token, som används för att hämta objektet.

Tips/Råd

Du behöver token för att hämta ett objekt från MRU, så spara den någonstans. Mer information om appdata finns i Hantera programdata.

Använda en token för att hämta ett objekt från MRU

Använd den hämtningsmetod som passar bäst för det objekt som du vill hämta.

Så här hämtar du tillbaka filen som vi nyss lade till.

StorageFile retrievedFile = await mru.GetFileAsync(mruToken);

Så här itererar du alla element för att hämta token och sedan objekt.

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.
}

Med hjälp av AccessListEntryView kan du iterera elementen i MRU. Dessa poster är AccessListEntry strukturer som innehåller token och metadata för ett objekt.

Ta bort objekt från MRU när den är full

När mru-gränsen på 25 objekt har nåtts och du försöker lägga till ett nytt objekt tas det objekt som användes längst tid sedan bort automatiskt. Därför behöver du aldrig ta bort ett objekt innan du lägger till ett nytt.

Lista över framtida åtkomst

Förutom en MRU har din app också en lista över framtida åtkomst. Genom att välja filer och mappar ger användaren din app behörighet att komma åt objekt som kanske inte är tillgängliga annars. Om du lägger till dessa objekt i listan med framtida åtkomst behåller du den behörigheten när din app vill komma åt dessa objekt igen senare. Appens lista över framtida åtkomst representeras av klassen StorageItemAccessList , som du hämtar från den statiska egenskapen StorageApplicationPermissions.FutureAccessList .

När en användare väljer ett objekt kan du överväga att lägga till det i listan över framtida åtkomst samt din MRU.

  • FutureAccessList kan innehålla upp till 1 000 objekt. Kom ihåg att den kan innehålla både mappar och filer, så det är många mappar.
  • Plattformen tar aldrig bort objekt från FutureAccessList åt dig. När du når gränsen på 1 000 objekt kan du inte lägga till en till förrän du skapar plats med metoden Ta bort .