Отслеживание недавно использовавшихся файлов и папок

Основные API

Отслеживайте файлы, к которым пользователь обращается часто, добавляя их в последний используемый список приложений (MRU). Платформа управляет MRU для вас путем сортировки элементов на основе последнего доступа и путем удаления самого старого элемента при достижении ограничения на 25 элементов списка. У всех приложений есть собственный MRU.

MRU приложения представлена классом StorageItemMostRecentlyUsedList, который можно получить из статического свойства StorageApplicationPermissions.MostRecentlyUsedList. Элементы MRU хранятся в виде объектов IStorageItem , поэтому объекты StorageFile (представляющие файлы) и объекты StorageFolder (которые представляют папки), можно добавить в MRU.

Необходимые условия

Добавление выбранного файла в MRU

  • Выбранные пользователем файлы часто являются файлами, которые они возвращают повторно. Поэтому рекомендуется добавлять выбранные файлы в MRU приложения, как только они будут выбраны. Вот как.

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

    StorageItemMostRecentlyUsedList.Add перегружен. В примере мы используем Add(IStorageItem, String), чтобы можно было связать метаданные с файлом. Настройка метаданных позволяет записать назначение элемента, например, "фотография профиля". Вы также можете добавить файл в MRU без метаданных, вызвав Add(IStorageItem). При добавлении элемента в MRU метод возвращает уникально идентифицирующую строку под названием токен, используемую для извлечения элемента.

Подсказка

Чтобы получить элемент из MRU, потребуется токен, поэтому сохраните его в подходящем месте. Дополнительные сведения о данных приложения см. в разделе "Управление данными приложения".

Использование маркера для извлечения элемента из MRU

Используйте метод извлечения наиболее подходящий для элемента, который требуется извлечь.

Вот как вернуть файл, который мы только что добавили.

StorageFile retrievedFile = await mru.GetFileAsync(mruToken);

Так можно осуществить итерацию всех записей, чтобы получить токены, а затем элементы.

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 позволяет выполнять итерацию записей в MRU. Эти записи представляют собой структуры AccessListEntry , содержащие маркер и метаданные для элемента.

Удаление элементов из MRU при его заполнении

Когда достигается ограничение MRU на 25 элементов и вы пытаетесь добавить новый элемент, тот, к которому не обращались дольше всего, удаляется автоматически. Таким образом, вам никогда не нужно удалять элемент перед добавлением нового элемента.

Список будущего доступа

Кроме MRU, ваше приложение также имеет список будущего доступа. Выбрав файлы и папки, пользователь предоставляет приложению разрешение на доступ к элементам, которые могут быть недоступны в противном случае. Если вы добавите эти элементы в список будущих доступа, вы сохраните это разрешение, когда приложение хочет получить доступ к этим элементам позже. Список будущих доступа приложения представлен классом StorageItemAccessList , полученным из статического свойства StorageApplicationPermissions.FutureAccessList .

Когда пользователь выбирает элемент, добавьте его в список для будущего доступа, а также в список MRU.

  • FutureAccessList может содержать до 1000 элементов. Помните: он может хранить папки, а также файлы, поэтому это много папок.
  • Платформа никогда не удаляет элементы из FutureAccessList для вас. Когда вы достигнете ограничения на 1000 элементов, вы не сможете добавить другой, пока не удается освободить место с помощью метода Remove .